場景:
DBA那邊給我導出了所有的存儲函數等等對象的創建腳本有上千個文件
現在需要將這些對象創建腳本導入到另外一個庫如何解決呢?
手動一個個執行顯然不太現實
於是手動寫了一個批處理將所有的文件形成一個SQL的腳本最後以@生成的SQL腳本方式導入到目標庫中
OS環境:WINDOWS xp
腳本內容如下:
@echo off
if exist listsql del listsql /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 /ad /s "%input%") do echo @@%%~fnxi>>listsql
if not exist listsql goto no_file
start listsql
exit
:no_file
cls
echo %cur_dir% 出現錯誤未成功生成listsql腳本!
pause
使用:
另存為BAT類型文件後雙擊執行
輸入你腳本的路徑:
如我的E盤CRY文件夾下有如下類型的文件:
TESTPRC
TESTFNC(有子文件夾)
TESTVW
執行該批處理後最後生成的listsql腳本文件內容如下(執行完批處理後會用默認的編輯器自動打開該文件):
@@E:cryTESTPRC
@@E:cryTESTFNC
@@E:cryTESTVW
打開SQLPLUS以指定用戶登錄數據庫然後執行: (我的腳本文件生成在d盤)
@D:listsql
這樣所有的對象就會自動在指定用戶下生成
注意:這樣生成的對象很多都是無效的因為沒有按順序生成所以建議在自動執行完後再編譯一下所有無效的對象
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22286.html