mysql 导出执行结果并保存为 csv文件, 并不是简单的导出某个数据包的结构和数据,而是需要导出某条 sql 语句执行后的结果,需求大致如下:
mysql -A db_name -h host_name -u user_name -p -ss -e "SELECT * FROM table_name LIMIT 100;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > apps.csv
sed 部分内容可以省略 (具体参数我还没弄明白,大意是设定 csv文件的分隔符等)
-A 指定数据库;
-h 指定 ip,远程数据库需要,导出本地数据库可以省略;
-u 用户名;
-p 密码;
-ss 指定导出的结果是否包含列名;
-e 后面加执行的 sql 语句 (e -> execute);
简单写法如下:
mysql -A db_name -h host_name -u user_name -p -e "SELECT * FROM table_name LIMIT 100;" > apps.csv
将某条 sql 语句的执行结果保存到 csv 文件中
特别注意:
在假设执行的 sql中包含关键字,在 windows下可以参考 mysql的用法,加上 “[tab键],如:
SELECT `key` FROM `order`;
但在 linux下就需要对 “[tab键] 进行转义,使用‘\’,如下:
SELECT \`key\` FROM \`order\`;
需要转义的完整例子如下:
mysql -A db_name -h host_name -u user_name -p -e "SELECT \`key\` FROM \`order\` LIMIT 100;" > apps.csv
参考:https://www.cnblogs.com/wuhongkuan/p/4704299.html
推荐阅读: