自動生成批量執行SQL指令碼的批處理

2021-08-27 10:34:32 字數 1129 閱讀 6515

場景:

dba那邊給我匯出了所有的儲存、函式等等物件的建立指令碼,有上千個檔案.

現在需要將這些物件建立指令碼匯入到另外乙個庫,如何解決呢?

手動乙個個執行顯然不太現實.

於是手動寫了乙個批處理,將所有的檔案形成乙個.sql的指令碼,最後以@生成的.sql指令碼方式匯入到目標庫中.

os環境:windows xp

指令碼內容如下:

@echo off

if exist list.sql del list.sql /q

:input

clsset input=:

set /p input= 請輸入要進行判斷的路徑:

set "input=%input:"=%"

:: 上面這句為判斷%input%中是否存在引號,有則剔除。

if "%input%"==":" goto input

if not exist "%input%" goto input

for /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do echo @@%%~fnxi>>list.sql

if not exist list.sql goto no_file

start list.sql

exit

:no_file

clsecho %cur_dir% 出現錯誤,未成功生成list.sql指令碼!

pause

使用:另存為.bat型別檔案後,雙擊執行.

輸入你指令碼的路徑:

如我的e盤cry資料夾下,有如下型別的檔案:

test.prc

123\test1.fnc(有子資料夾123)

test2.vw

@@e:\cry\test.prc

@@e:\cry\123\test1.fnc

@@e:\cry\test2.vw

開啟sqlplus,以指定使用者登入資料庫,然後執行:(我的指令碼檔案生成在d盤)

@d:\list.sql

這樣所有的物件就會自動在指定使用者下生成.

注意:這樣生成的物件很多都是無效的,因為沒有按順序生成,所以建議在自動執行完後,再編譯一下所有無效的物件.

批量執行SQL指令碼

1.先要 xp cmdshell 這個東東給開啟,開啟方法如下 sp configure show advanced options 1reconfigure gosp configure xp cmdshell 1reconfigure go測試就這樣exec master.dbo.xp cmds...

通過Excel生成批量SQL語句,處理大量資料

我們經常會遇到這樣的要求 使用者給發過來一些資料,要我們直接給存放到資料庫裡面,有的是insert,有的是update等等,少量的資料我們可以採取最原始的辦法,也就是在sql裡面用insert into來實現,但是如果有幾十條幾百條甚至上千條資料的時候繼續寫單獨的sql語句的話那就慘了,其實有兩種簡...

通過Excel生成批量SQL語句,處理大量資料

我們經常會遇到這樣的要求 使用者給發過來一些資料,要我們直接給存放到資料庫裡面,有的是insert,有的是update等等,少量的資料我們可以採取最原始的辦法,也就是在sql裡面用insert into來實現,但是如果有幾十條幾百條甚至上千條資料的時候繼續寫單獨的sql語句的話那就慘了,其實有兩種簡...