2013-12-11 67 views
0

data.sql包含以下數據tee命令在MySQL批處理文件是不是我有mysql的批處理文件nameed工作

tee /var/lib/MYSQLBACKUP/info.txt; 
USE APR_PHASE_II ; 
INSERT INTO PRODUCTDETAILS (ITEM_CODE,ITEM_DESC) VALUES ('WT002','Water for Injection USP'); 
INSERT INTO PRODUCTDETAILS (ITEM_CODE,ITEM_DESC) VALUES ('WT003','Water for Injection USP'); 

當我使用下面的命令

mysql -u root -ppass < /var/lib/data.sql; 

執行data.sql腳本將數據插入到表產品詳細,但由於我們正在執行第一洞發球臺命令放到批處理文件就應該將輸出重定向到info.txt沒有執行的輸出存儲到info.txt文件中

如果我登錄到mysql命令提示符,然後逐個執行批處理文件語句,它會將輸出重定向到info.txt,任何人都可以指導我解決這個問題嗎?

MySQL的版本是5.1和OS版是Fedora 14

回答

0

批處理模式不產生任何輸出(參見「查詢行,1行受影響」交互模式),除非出現錯誤,所以沒有什麼看到。

但是,在第一個錯誤時停止並寫入消息到STDERR - 與在交互模式下使用source命令形成對比,後者保持運行。

如果使用<重定向應用到mysql命令行客戶端的批處理命中錯誤,則執行將停止,並且shell變量$?將包含非零值。成功時它將包含'0'。

STDERR的流可以使用2>重定向

$ mysql < deliberate_error_in_here.sql 2>err.txt 

沒有示出了在控制檯上被捕獲到一個文件,但退出狀態變量被設置爲1。

$ echo $? 
1 

該文件I名爲「err.txt」包含錯誤。

$ cat err.txt 
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use near 'foo' 
at line 1 

在Windows,而不是$?你檢查%ERRORLEVEL%爲非零值,如果出現錯誤。

這是否是有用的信息,實際上取決於你想要做什麼。如果你只是使用批處理模式,但實際上手動這樣做,然後使用tee,然後使用source {filename}申請文件可能會更接近您要查找的內容,因爲它顯示輸出,但它不顯示正在執行的實際語句,因爲您沒有真正鍵入它(它只顯示使用source命令,後面是執行每個命令後產生的所有正常輸出)。

+0

我有一個問題,所以我不會有狀態的批處理文件執行的日誌多少查詢將被執行成功,多少失敗? – user1409935

+0

它將在批處理模式下的第一個錯誤處停止。如果'$?'值爲零,則沒有錯誤。 –