程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sql server自動生成批量執行SQL腳本的批處理

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

編輯:關於SqlServer

      場景:

    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

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

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved