場景:
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
這樣所有的對象就會自動在指定用戶下生成.
---------------------------
注意:這樣生成的對象很多都是無效的,因為沒有按順序生成,所以建議在自動執行完後,再編譯一下所有無效的對象.