首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以CSV格式输出MySQL查询结果?

如何以CSV格式输出MySQL查询结果?
EN

Stack Overflow用户
提问于 2008-12-10 23:59:52
回答 39查看 1.4M关注 0票数 1.3K

有没有一种简单的方法可以从Linux命令行运行MySQL查询并以CSV格式输出结果?

下面是我现在要做的:

代码语言:javascript
复制
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/        /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ

当有很多列需要用引号括起来,或者如果结果中有引号需要转义时,它会变得混乱。

EN

回答 39

Stack Overflow用户

回答已采纳

发布于 2008-12-10 16:07:55

来自

代码语言:javascript
复制
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';

注意:该语法可能需要重新排序以

代码语言:javascript
复制
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进程的用户必须具有写入所选目录的权限,否则命令将失败。

如果您希望从远程服务器(尤其是托管或虚拟计算机,如HerokuAmazon RDS)将输出写入本地计算机,则此解决方案不适合。

票数 1.9K
EN

Stack Overflow用户

发布于 2010-04-09 00:53:25

代码语言:javascript
复制
mysql your_database --password=foo < my_requests.sql > out.csv

以制表符分隔。这样就可以得到一个真正的CSV (感谢to user ):

代码语言:javascript
复制
... .sql | sed 's/\t/,/g' > out.csv
票数 519
EN

Stack Overflow用户

发布于 2009-09-30 10:51:27

mysql --batch,-B

使用制表符作为列分隔符打印结果,每行占一行。使用此选项时,mysql不使用历史文件。批处理模式会导致非表格输出格式和特殊字符的转义。可以使用raw模式禁用转义;请参阅--raw选项的说明。

这将为您提供一个制表符分隔的文件。由于逗号(或包含逗号的字符串)不会转义,因此将分隔符更改为逗号并不简单。

票数 227
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/356578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档