1. 程式人生 > >mysql 批處理命令執行多個sql指令碼

mysql 批處理命令執行多個sql指令碼

方法1
若有SQL指令碼a.sql, b.sql, 其目錄在f盤根目錄下, 則可再寫一個SQL指令碼c.sql(假設其目錄也在f盤根目錄下, 也可以在其他路徑下)如下:
source f:/a.sql;
source f:/b.sql;
然後執行source f:/c.sql 即可.

方法2
方法1的不便之處在於, 要為每個指令碼寫一句程式碼, 若有成千上萬個, 這樣寫便不現實. 此時, 可用批處理來實現.
以執行f:\test\目錄下所有的SQL指令碼為例, 其批處理程式碼如下:
@echo off
for %%i in (f:\test*.sql) do (
echo excute %%i
mysql -uroot -p123456 < %%i
)
echo success
pause
其中: do後面的左括號要跟在do後, 若放在do的下一行, 則出會出現一閃而過的情況, 資料庫指令碼有沒有執行沒有去檢視.
若是當前目錄下, 可將”f:\test*.sql” 改為”.*.sql” 即可.

注意在SQL指令碼中寫上 use db_name.
批處理命令備份mysql資料庫
本文轉自http://www.jb51.net/article/19296.htm
MySQL資料的備份工具也許有很多,在這我要給大家分享一下通過DOS批處理命令和MySQL、WinRAR命令來進行備份工作。
工作環境 Windows Server 2003 ,MySQL安裝目錄 D:\MySQL , WinRAR 安裝目錄 C:\Program Files\WinRAR\WinRAR.exe
備份資料儲存的路徑為 E:\資料備份,好了下面開始寫DOS批處理命令了。
複製程式碼 程式碼如下:

set “Ymd=�te:~,4%�te:~5,2%�te:~8,2%”
md “E:\資料備份\%ymd%”
“D:\MySQL\bin\mysqldump.exe” –opt -Q mysql -uroot -p123456789 > E:\資料備份\%Ymd%\mysql.sql
REM ….. 這裡可以新增更多的命令,要看你有多少個數據庫,其中 -Q 後面是資料庫名稱 -p緊跟後面是密碼
echo Winrar loading…
“C:\Program Files\WinRAR\WinRAR.exe” a -ep1 -r -o+ -m5 -df “E:\資料備份\%Ymd%.rar” “E:\資料備份\%Ymd%”
echo OK!

把上面的命令儲存為 backup.bat ,雙擊執行,就開始備份資料了。
第一句是建立一個變數 %Ymd% ,通過 �te% 這個系統變數得到日期,�te:~,4% 表示取日期的前面4個字元就是年份,%�te:~5,2% 表示取日期第5個字元開始的2個字元就是月份,�te:~8,2% 這個就是日期號數,如 2009-06-20 這個日期最後得到的結果是 20090620
第二句就是使用變數 %Ymd% 的值建立一個空的資料夾。
第三句開始就是使用MySQL的命令對資料庫mysql 進行備份,並存儲在 E:\資料備份\%ymd% 這個資料夾下面,這裡可以有很多類似的命令,備份多個數據庫。
最後就是使用 WinRAR 對備份的資料進行壓縮,並存儲為以 %Ymd% 變數值建立的RAR檔名,同時刪除備份的 %Ymd% 目錄。
如果你想讓系統自動定期備份,就可以通過系統的任務計劃定期執行這個命令。

批處理語法,bat語法
批處理就是把一批或者說是一條條命令放在一個文本里,然後批量執行!執行這
一批命令的檔案的副檔名是BAT檔案或者CMD,把任何一批命令放入在有這樣副檔名的檔案裡,執行時裡面的命令就會一條條的執行完,當然
我們還可以在其中加入一些邏輯判斷的語句,讓裡面的命令在滿足一定條件時執行指定的命令.
瞭解了大概意思後,我們正式開始學習.先看一個簡單的例子!

@echo off
echo “歡迎來到非常BAT!”
pause
把上面的3條命令儲存為test.bat或者test.cmd然後執行,他就會在螢幕上顯示二行話:”歡迎來到非常BAT!請按任意鍵繼續…”
這就是一個簡單批處理檔案了,我們來分析一下.
這個批處理檔案一共就用了2條命令 “echo” 和”pause” 還有一個特殊符號”@”
@符號在批處理中的作用是關閉當前行命令的回顯,也就是不顯示執行的是什麼命令,只顯示命令的結果!
你可以執行下面這個批處理檔案來理解,儲存為.bat或者.CMD
@echo 你好
echo 你好
@pause

echo命令的作用有兩個,一個是在CMD上回顯一行內容.如:echo “歡迎來到非常BAT!”,還一個是關閉命令的回顯:echo off
echo off的作用就相當於在每條命令前面加一個@符號,這樣所有的命令將只會顯示結果不顯示命令.
我們在echo off這命令前加一個@符號是為了不讓echo off這條命令本身顯示出來,讓批處理更完美!

pause命令就是暫停的意思,防止批處理執行完後直接退出!執行pause命令後會自動在CMD裡顯示”請按任意鍵繼續…”這樣一行話!

從上面這個簡單的批處理中,我們可以發現其實批處理就是運用一些含有特殊意義的符號和一些完成指定功能的命令組合而成,那麼
在批處理中有多少這樣的特殊符號和功能命令呢?我們現在就來仔細瞭解一下一些最常用的!
(以下內容來源網路,請各位仔細閱讀,好進入下節的例項說明)

批處理的常見命令
REM
ECHO
GOTO
CALL
PAUSE
IF
還有(FOR,SETLOCAL,SHIFT)這幾個命令比較難,不適合寫在基礎篇,以後說明!
批處理定義:顧名思義,批處理檔案是將一系列命令按一定的順序集合為一個可執行的文字檔案,其副檔名為BAT。
這些命令統稱批處理命令。
介紹命令
1、REM (remark)
REM是個註釋命令,一般用來給程式加上註解,該命令後的內容在程式執行時,將不會被顯示和執行。
例:REM 這個命令就是註釋
這一句將不會被執行
2、ECHO
ECHO是一個回顯命令,主要引數有OFF和ON。一般用ECHO MESSAGE來顯示一個特定的訊息。
例:
Echo off
Rem 以上代表關閉回顯(就是不顯示所執行的命令)
Echo 這個就是訊息(message)
Rem 以上代表顯示“這就是訊息(message)”這列字元
咱們來看看執行結果:

3、GOTO
GOTO會點程式設計的朋友就會知道這是跳轉的意思。
在批處理中允許以“:XXX”來構建一個標號,然後用GOTO XXX直接來執行標號後的命令。
例:
:lable
REM 上面就是名為LABEL的標號
DIR C:\
DIR D:\
GOTO lable
REM 以上程式跳轉標號LABEL處繼續執行
咱們來看看結果:
4、CALL
CALL命令可以在批處理執行過程中呼叫另一個批處理,當另一個批處理執行完後,再繼續執行原來的批處理
例:
建立一個2.BAT,內容如下
ECHO 這就是2的內容
建立一個1.BAT,內容如下
ECHO 這是1的內容
CALL 2.BAT
ECHO 1和2的內容全部顯示完成。
執行1.BAT,來看看結果:
5、PAUSE
PAUSE,玩遊戲的人都知道,暫停的意思
在這裡就是停止系統命令的執行並顯示下面的內容。
例:
PAUSE
6、IF
IF 條件判斷語句,語法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
解釋下:
[NOT]:將返回結果取反值,就是“如果沒有”的意思
ERRORLEVEL:
是命令執行完成後返回的退出值
Number:
退出值的數字取值範圍0~255,判斷時值的排列順序應該由大到小。返回的值大於等於指定的值時,條件成立
string1==string2:
string1和string2都為字元的資料,英文內字元的大小寫將看作不同,這個條件中的等於號必須是兩個(絕對相等的意思)
條件相等後即執行後面的command
EXIST filename:
為檔案或目錄存在的意思
IF ERRORLEVEL這個句子必須放在某一個命令的後面,執行命令後由IF ERRORLEVEL 來判斷命令的返回值。
例:
(1)
IF [NOT] ERRORLEVEL number command
檢測命令執行完後的返回值做出判斷
echo off
dir z:
rem 如果退出程式碼為1(不成功)就跳至標題1處執行
IF ERRORLEVEL 1 goto 1
REM 如果退出程式碼為0(成功)就跳至標題0處執行
IF ERRORLEVEL 0 goto 0
:0
echo 命令執行成功!
Rem 程式執行完畢跳至標題exit處退出
goto exit
:1
echo 命令執行失敗!
Rem 程式執行完畢跳至標題exit處退出
goto exit
:exit
Rem 這裡是程式的出口
(2)IF string1==string2 command
檢測當前變數的值做出判斷
ECHO OFF
IF 1==2 goto no
Echo 變數相等!
goto exit
:no
echo 變數不相等
goto exit
:exit
看看效果,敲擊這個命令1.bat 數字
(3)IF [NOT] EXIST filename command
發現特定的檔案做出判斷
echo off
IF not EXIST autoexec.bat goto 1
echo 檔案存在成功!
goto exit
:1
echo 檔案不存在失敗!
goto exit
:exit
這個批處理大家可以放在C盤和D盤分別執行,看看效果

特殊符號:
1. @
2. >
3. >>
4. |
5. ^
6. &
7. &&
8. “”
9. ,
10. ;