2010-11-10 87 views
20

我试图在MySQL中使用source命令执行foo.sql。将MySQL源结果输出到日志文件

当我键入命令时,文件被相应来源:

mysql> source ~/foo.sql 

现在,有在这个文件正在执行大量的报表,我想先回顾一下这些语句的成功/失败。有没有一种方法可以将语句的结果传递给日志文件foo.txt?

我想到的线沿线的东西:

mysql> source ~/foo.sql into outfile ~/foo.txt 

然而,键入此命令似乎认为一切以下源语句是一个文件名;所以它试图将一个名为'〜/ foo.sql'的文件输入到outfile〜/ foo.txt中,这显然不存在。

+0

您是否检查过“pager”命令? – Konerak 2010-11-10 17:11:12

回答

37

从你的MySQL客户端中,键入

tee session.out 

从这一点上,您当前客户机会话中的所有I/O都写入文件'session.out'

+0

谢谢,这正是我正在寻找的。 – Isaac 2011-05-10 15:19:37

+10

另外,如果你想停止输出,只需键入'notee'([source](http://dev.mysql.com/doc/refman/5.0/en/mysql-commands.html)) – 2013-04-17 21:02:51

+0

很好的答案! ! – Amol 2015-07-15 04:34:15

4

你可以从你的shell提示符下做到这一点:

$ mysql -p dbname <foo.sql> foo.txt 
2

使用命令行:

mysql -p dbname < ~/foo.sql > ~/foo.txt 
+0

我试过这个,但生成的文件没有包含任何内容。 – Isaac 2010-11-10 16:36:45

+1

数据库是否按照你想要的那样加载?只有错误消息将被添加到文件中。哦,它也会停止在第一个错误,除非你给它一个命令行选项,以防止错误。 – SorcyCat 2010-11-11 15:07:30

+0

它首先完成没有错误。然后我再次尝试,并将max_allowed_pa​​cket设置为5M,这样就会故意出错。它确实得到了一个错误,但foo.txt没有列出这个错误。 – Isaac 2010-11-11 18:39:41

相关问题