将有逗号数据的SQL表导出为CSV文件。
将有逗号数据的SQL表导出为CSV文件。
有没有一种简单的方式可以从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
当有很多需要用引号包围的列,或者结果中有需要转义的引号时,就会变得混乱。
admin 更改状态以发布 2023年5月25日
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';
注意:在MySQL的最新版本中,该语法可能需要重新排序为
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';
使用此命令,列名将不会被导出。
还要注意,/var/lib/mysql-files/orders.csv
将位于运行MySQL的服务器上。MySQL进程正在运行的用户必须具有写入所选择目录的权限,否则命令将失败。
如果您想从远程服务器(特别是托管或虚拟化机器,如Heroku或Amazon RDS)将输出写入本地机器,则此解决方案不适用。