我正在尝试创建一个文件并在其中存储查询结果。我有一个包含单个查询的批处理文件
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
答案 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文件中的选项。
参考文献:
mysql --help
获取选项列表