我正在尝试使用mysql命令行工具以逗号分隔格式输出查询结果 . 我的mysql用户无权使用此问题中引用的“INTO OUTFILE”选项:
How to output MySQL query results in CSV format?
我也知道分别在html和xml中格式化输出的-H和-X选项,但是没有办法直接将csv格式输出到屏幕上吗?
我发现这个方法使用sed - http://tlug.dnho.net/?q=node/209 . 但是,我很想找到一个直接的mysql解决方案 .
有任何想法吗?
9 回答
CLI可以以制表符分隔的格式输出,这几乎足够好(我从经验中说) . 使用-B选项 . 制表符分隔的最大问题是我无法使Excel导入该格式 . 但是,OpenOffice确实如此 .
关注Change output format for MySQL command line results to CSV
我最后只是将制表符分隔输出并将其复制粘贴到电子表格,然后将其导出到csv . 还意识到我可以使用concat或concat_ws函数来完成这项工作,并且下次会这样做 .
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws
SELECT CONCAT_WS(',',field1,field2,field3)FROM表;
如果你需要引用一个ouput字段,让我们说1美元,你的awk打印将如下所示:
我知道如何使用
mysql
命令行客户端单独生成CSV输出,除了你已经找到的解决方案 .文件中存在一些用于CSV输出支持的功能请求:
http://bugs.mysql.com/bug.php?id=5707
http://bugs.mysql.com/bug.php?id=25243
我建议的唯一其他解决方案是在Perl或PHP中编写脚本,从MySQL获取数据并以CSV格式或任何其他格式输出 . 这不是一个难以编写的脚本 .
将答案传递给
tr
,如下所示:如果安装了MySQL Workbench,则可以运行查询,然后单击结果上方的“导出” . 它将为您提供保存为.CSV的选项 .
如果你有权访问mysqldump,你可以使用这样的东西
如果您以交互方式使用mysql,可以将寻呼机设置为使用sed,如下所示:
如果你不使用see作为寻呼机,输出如下: