1.说明
通常mysql数据库导出csv文件用outfile命令指定导出的csv文件的格式(outfile导出csv文件见如下命令),但是阿里云的RDS数据库不支持该命令。
select * from test_info
into outfile '/tmp/test.csv'
fields terminated by ',' ------字段间以,号分隔
optionally enclosed by '"' ------字段用"号括起
escaped by '"' ------字段中使用的转义符为"
lines terminated by '\r\n'; ------行以\r\n结束
因此解决RDS导出csv文件需要另寻捷径,采用拼接sql语句的方法解决,以具体例子说明该方法:
表结构如下:
CUST_NAME | varchar(10) |
ID_TYP | varchar(5) |
ID_NO | varchar(20) |
ROLE_TYP | varchar(10) |
拼接sql语句如下:
SELECT CONCAT('"',a.`CUST_NAME`,'","',a.`ID_TYP`,'","',a.`ID_NO`,'","',a.`ROLE_TYP`,'"') AS `CUST_NAME,ID_TYP,ID_NO,ROLE_TYP` FROM `test_table` a;
将sql语句保存为文件,调用命令导出csv文件
mysql -h1.1.1.1 -uroot -p123456 --default-character-set=utf8 < /home/test/dt_person.sql> /home/test/dt_person.csv
2.包装为shell
sql脚本文件为dt_person.sql
use testbase;
SELECT CONCAT('"',a.`CUST_NAME`,'","',a.`ID_TYP`,'","',a.`ID_NO`,'","',a.`ROLE_TYP`,'"') AS `CUST_NAME,ID_TYP,ID_NO,ROLE_TYP` FROM `test_table` a;
shell脚本调用export.sh
#!/bin/bash
#----------------------------------
# filename: export.sh
# describe: export table
# author: test-abc
# date: 2019-08-06
#----------------------------------
host=1.1.1.1
mysqlname=root
mysqlpassword=123456
path=/home/test
mysql -h$host -u$mysqlname -p$mysqlpassword --default-character-set=utf8 < $path/dt_person.sql> $path/dt_person.csv