人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Windows環(huán)境下實(shí)現(xiàn)批量執(zhí)行Sql文件

發(fā)布日期:2021-12-07 14:03 | 文章來源:gibhub

使用場景:按文件名字正序,批量執(zhí)行某文件夾下的所有sql文件,并輸出日志
適合人群:實(shí)施工程師

一、使用篇

1、準(zhǔn)備bat文件:
1.1、ExecSql.bat(執(zhí)行腳本)(文件編碼:ANSI,這個(gè)編碼與下面提到的utf8和gb2312都不一樣,用記事本編輯默認(rèn)就是這個(gè)編碼,所以不一定要下notepad++)

@ECHO OFF
SET dbhost=127.0.0.1
SET dbuser=sa
SET dbpasswd=sa
SET dbName=Application
REM 以下內(nèi)容不建議修改
REM 執(zhí)行腳本的路徑,此處為當(dāng)前路徑
SET sqlpath=%~dp0
REM 日志文件名
SET temp=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
SET logFileName=%sqlpath%%temp: =0%
::執(zhí)行sql腳本
echo 開始執(zhí)行sql腳本,所有日志記錄于%logFileName%
for /r %%i in (*.sql) do ( echo %%i被執(zhí)行 & echo ----- %%i log start ----- >> %logFileName% & sqlcmd -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %%i -k -b -m 10 >> %logFileName% & echo ----- %%i log end ----- >> %logFileName% & @echo. >> %logFileName%)
ECHO 完成!
PAUSE
1.2、ShowOrder.bat(查看什么腳本會(huì)被執(zhí)行,按什么順序執(zhí)行)(文件編碼:ANSI)
@ECHO OFF
for /r %%i in (*.sql) do ( echo %%i )
ECHO 完成!
PAUSE
2、將ExecSql.bat復(fù)制到目標(biāo)根目錄下,文件目錄結(jié)構(gòu)(文件夾路徑最好沒有中文),如圖,假設(shè)我需要執(zhí)行此文件夾下所有的sql文件

3、【可選做】排序,如果對sql文件的執(zhí)行順序有要求的,需要對文件進(jìn)行重命名,如上圖所示,執(zhí)行順序?yàn)槲募终?,建議使用“01.”這種作為文件名前綴

將ShowOrder.bat復(fù)制到目標(biāo)根目錄下,雙擊運(yùn)行,查看執(zhí)行順序是否符合預(yù)期

4、【重要】編碼轉(zhuǎn)換,一般情況下.sql文件的編碼都是utf8,如果.sql文件內(nèi)容中,使用了中文(注釋不算),則需要修改文件編碼是GB2312,否則會(huì)執(zhí)行錯(cuò)誤的sql語句。

比如01.XXX.sql的編碼是utf8的,但插入數(shù)據(jù)庫的數(shù)據(jù)卻是亂碼

以下4.1和4.2擇一執(zhí)行

4.1、修改編碼的方法為:使用Notepad打開.sql文件,ctrl+A(全選),ctrl+C(復(fù)制),點(diǎn)擊Notepad“編碼”->“編碼字符集”->“中文”->“GB2312”,應(yīng)該會(huì)出現(xiàn)一個(gè)“無法恢復(fù)警告”,點(diǎn)“是”,ctrl+A(全選),ctrl+V(粘貼),最后保存

4.2、使用工具(EncodingConverter)批量修改:下載好工具后解壓即可運(yùn)行,雙擊BatchConvertor.exe,如下圖所示設(shè)置

轉(zhuǎn)化完成后會(huì)再執(zhí)行會(huì)得到正確的中文

5、修改bat文件,用Notepad++或別的編輯器打開bat文件,修改ExecSql.bat中的數(shù)據(jù)庫連接相關(guān)信息,只改跟連接數(shù)據(jù)庫相關(guān)的4個(gè)變量即可,其他不需要修改,改完后保存

6、雙擊bat文件,會(huì)有如圖所示的輸出

7、查看日志,檢查每一個(gè).log文件,沒有消息就是好消息,一個(gè)執(zhí)行正確腳本的.log文件一般長這樣

有錯(cuò)誤也會(huì)反饋出來,如腳本再執(zhí)行一次就會(huì)報(bào)錯(cuò)

特別提醒:此bat文件會(huì)檢查當(dāng)前文件夾下所有的.sql文件并執(zhí)行,再次執(zhí)行bat時(shí)需要?jiǎng)h掉一些不用再次執(zhí)行的.sql文件

二、原理篇

sqlcmd和osql兩種命令都可以執(zhí)行sql文件,兩者參數(shù)配置項(xiàng)幾乎完全一樣,這里選用sqlcmd是出于這個(gè)的日志輸出比較整潔,且微軟打算在未來SqlServer中刪除osql(不再支持)。兩種命令都可以在cmd中使用XXX/?來查詢幫助

sqlcmd的官方文檔:https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver15

osql的官方文檔:https://docs.microsoft.com/zh-cn/sql/tools/osql-utility?view=sql-server-ver15

到此這篇關(guān)于Windows環(huán)境下實(shí)現(xiàn)批量執(zhí)行Sql文件的文章就介紹到這了,更多相關(guān)Windows批量執(zhí)行Sql文件內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部