萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> sql server自動生成批量執行SQL腳本的批處理

sql server自動生成批量執行SQL腳本的批處理

  場景:

DBA那邊給我導出了所有的存儲、函數等等對象的創建腳本,有上千個文件.

現在需要將這些對象創建腳本導入到另外一個庫,如何解決呢?

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

於是手動寫了一個批處理,將所有的文件形成一個.SQL的腳本,最後以@生成的.SQL腳本方式導入到目標庫中.

OS環境:WINDOWS xp

腳本內容如下:

@echo off
if exist list.sql del list.sql /q
:input
cls
set 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
cls
echo       %cur_dir% 出現錯誤,未成功生成list.sql腳本!
pause

使用:

另存為.BAT類型文件後,雙擊執行.

輸入你腳本的路徑:

如我的E盤CRY文件夾下,有如下類型的文件:

TEST.PRC

...

123TEST1.FNC(有子文件夾123)

...

TEST2.VW

..

執行該批處理後,最後生成的list.sql腳本文件內容如下(執行完批處理後會用默認的編輯器自動打開該文件):

@@E:cryTEST.PRC

...

@@E:cry123TEST1.FNC

...

@@E:cryTEST2.VW

...

打開SQLPLUS,以指定用戶登錄數據庫,然後執行: (我的腳本文件生成在d盤)

@D:list.sql

這樣所有的對象就會自動在指定用戶下生成.

---------------------------

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

copyright © 萬盛學電腦網 all rights reserved