2010-11-10 43 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

相關問題