7

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

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
4

3 回答 3

5

这应该可以解决问题:

mysql -u root -p -t -vvv < select.sql | sed '1 d' > output.txt
于 2013-01-08T23:48:44.493 回答
0

您还可以执行以下操作:

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

这不需要制作一个SQL文件然后过滤掉第一行。

于 2018-09-02T01:06:09.177 回答
0

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

编辑/创建文件:

vim ~/.my.cnf

添加/更新:

[client]
table

下次您调用 mysql 命令行程序时,它将使用 .my.cnf 文件中的选项以表格格式生成输出,例如与调用的相同:

mysql ... --table ... 

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

参考:

于 2019-10-15T13:00:14.750 回答