情境:
DBA那邊給我匯出了所有的儲存、函數等等對象的建立指令碼,有上千個檔案.
現在需要將這些對象建立指令碼匯入到另外一個庫,如何解決呢?
手動一個個執行顯然不太現實.
於是手動寫了一個批處理,將所有的檔案形成一個.SQL的指令碼,最後以@產生的.SQL指令碼方式匯入到目標庫中.
OS環境:WINDOWS xp
指令碼內容如下:
@echo offif exist list.sql del list.sql /q:inputclsset input=:set /p input= 請輸入要進行判斷的路徑:set "input=%input:"=%":: 上面這句為判斷%input%中是否存在引號,有則剔除。if "%input%"==":" goto inputif not exist "%input%" goto inputfor /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do echo @@%%~fnxi>>list.sqlif not exist list.sql goto no_filestart list.sqlexit:no_fileclsecho %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
這樣所有的對象就會自動在指定使用者下產生.
---------------------------
注意:這樣產生的對象很多都是無效的,因為沒有按順序產生,所以建議在自動執行完後,再編譯一下所有無效的對象.