有没有一种简单的方法可以从 Linux 命令行运行 MySQL 查询并以CSV格式输出结果?
这就是我现在正在做的事情:
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv select id, concat("\"",name,"\"") as name from students EOQ
当有很多列需要用引号括起来,或者结果中有引号需要转义时,它会变得混乱。
从 将 MySQL 查询结果保存到文本或 CSV 文件中 :
SELECT order_id,product_name,qty FROM orders WHERE foo = 'bar' INTO OUTFILE '/var/lib/mysql-files/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
注意:该语法可能需要重新排序为
SELECT order_id,product_name,qty INTO OUTFILE '/var/lib/mysql-files/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM orders WHERE foo = 'bar';
在最新版本的 MySQL 中。
使用此命令,列名将不会被导出。
另请注意,/var/lib/mysql-files/orders.csv它将在运行 MySQL的 服务器上。 运行 MySQL 进程的用户必须具有写入所选目录的权限,否则命令将失败。
/var/lib/mysql-files/orders.csv
如果您想从远程服务器(尤其是托管或虚拟化机器,如Heroku或Amazon RDS )将输出写入本地机器,则此解决方案不适合。