場景:
DBA那邊給我導(dǎo)出了所有的存儲(chǔ)、函數(shù)等等對(duì)象的創(chuàng)建腳本,有上千個(gè)文件.
現(xiàn)在需要將這些對(duì)象創(chuàng)建腳本導(dǎo)入到另外一個(gè)庫,如何解決呢?
手動(dòng)一個(gè)個(gè)執(zhí)行顯然不太現(xiàn)實(shí).
于是手動(dòng)寫了一個(gè)批處理,將所有的文件形成一個(gè).SQL的腳本,最后以@生成的.SQL腳本方式導(dǎo)入到目標(biāo)庫中.
OS環(huán)境:WINDOWS xp
腳本內(nèi)容如下:
代碼如下:
@echo off
if exist list.sql del list.sql /q
:input
cls
set input=:
set /p input= 請(qǐng)輸入要進(jìn)行判斷的路徑:
set "input=%input:"=%"
:: 上面這句為判斷%input%中是否存在引號(hào),有則剔除。
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% 出現(xiàn)錯(cuò)誤,未成功生成list.sql腳本!
pause
使用:
另存為.BAT類型文件后,雙擊執(zhí)行.
輸入你腳本的路徑:
如我的E盤CRY文件夾下,有如下類型的文件:
TEST.PRC
..
123/TEST1.FNC(有子文件夾123)
..
TEST2.VW
.
執(zhí)行該批處理后,最后生成的list.sql腳本文件內(nèi)容如下(執(zhí)行完批處理后會(huì)用默認(rèn)的編輯器自動(dòng)打開該文件):
@@E:/cry/TEST.PRC
..
@@E:/cry/123/TEST1.FNC
..
@@E:/cry/TEST2.VW
..
打開SQLPLUS,以指定用戶登錄數(shù)據(jù)庫,然后執(zhí)行: (我的腳本文件生成在d盤)
@D:/list.sql
這樣所有的對(duì)象就會(huì)自動(dòng)在指定用戶下生成.
---------------------------
注意:這樣生成的對(duì)象很多都是無效的,因?yàn)闆]有按順序生成,所以建議在自動(dòng)執(zhí)行完后,再編譯一下所有無效的對(duì)象.