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

1425

有没有一种简单的方式可以从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

当需要将许多列用引号括起来或结果中有需要转义的引号时,情况会变得混乱。


1
您可以在查询中使用 REPLACE() 函数来转义引号。 - dsm
看看我在这个stackoverflow上的回答。 - biniam
4
这个stackoverflow问题的被采纳的答案可能是最好的方式:https://dev59.com/RVDTa4cB1Zd3GeqPKp5i - Samuel Åslund
我在MariaDB bug跟踪器上编写了一个功能请求(https://jira.mariadb.org/browse/MDEV-12879),您可以对其投票。 - Jared Beck
https://dev59.com/aHNA5IYBdhLWcg3wBpHs - Sunil Rajput
显示剩余5条评论
41个回答

-4
您可以从SQL编辑器/终端使用以下命令:
mysql -h(hostname/IP>) -u(username) -p(password) databasename <(query.sql) > outputFILE(.txt/.xls)

E.g.,

  • hostname -x.x.x.x

  • uname - username

  • password - password

  • DBName - employeeDB

  • queryFile - employee.sql

  • outputFile - outputFile.xls

mysql -hx.x.x.x -uusername -ppassword employeeDB<employee.sql> outputFile.xls

确保你在SQL查询所在的目录中执行该命令或在上述命令中提供SQL查询位置的完整路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接