如何将MySQL结果以表格格式存储到文件中

时间:2013-01-08 21:20:27

标签: mysql formatting batch-processing

我正在尝试创建一个文件并在其中存储查询结果。我有一个包含单个查询的批处理文件

USE database1;

SELECT * FROM table WHERE name = "abc" INTO OUTFILE output.txt;

QUIT

使用

执行此批处理文件
mysql -u root -p -t -vvv < select.sql

但是,结果不是表格格式,并且顶部缺少字段的名称。

100 abc Brown 32
101 abc Flair 25
102 abc McDonald 45
.
.
.

如果我删除了INTO OUTFILE语句并在终端上打印结果,那么工作正常。

+----+------+---------+-----+
| id | name | surname | age |
+----+------+---------+-----+
| 100| abc  | Brown   |   32|
| 101| abc  | Flair   |   25|
| 102| abc  | McDonald|   45|
+----+------+---------+-----+

如何在txt文件中实现上述目的?

更新

特别感谢GreyBeardedGeek。在GreyBeardedGeek的帮助下,这是这个问题的解决方案。

批处理文件:

USE database1;

SELECT * FROM table WHERE name = "abc";

QUIT

和mysql客户端:

mysql -u root -p -t -vvv < select.sql > output.txt

3 个答案:

答案 0 :(得分:6)

这应该可以解决问题:

mysql -u root -p -t -vvv < select.sql | sed '1 d' > output.txt

答案 1 :(得分:0)

您还可以执行以下操作:

mysql -uroot -p DatabaseName -t -e "select * from table" > file.txt

这不需要先创建一个SQL文件,然后再过滤掉第一行。

答案 2 :(得分:0)

除了使用mysql客户端程序选项(mysql --help)之外,还可以在.my.cnf文件中配置默认​​值。启用--table选项的示例(MacOs,Linux):

编辑/创建文件:

vim ~/.my.cnf

添加/更新:

[client]
table

下次调用mysql命令行程序时,它将使用.my.cnf文件中的选项以表格式生成输出,例如就像一个人所说的:

mysql ... --table ... 

请注意,命令行选项会覆盖.my.cnf文件中的选项。

参考文献: