自動(dòng)生成批量執(zhí)行SQL腳本的批處理實(shí)例演示
更新時(shí)間:2013年04月16日 16:56:14 作者:
DBA那邊給我導(dǎo)出了所有的存儲(chǔ)、函數(shù)等等對(duì)象的創(chuàng)建腳本,有上千個(gè)文件,接下來(lái)為大家介紹下如何將這些對(duì)象創(chuàng)建腳本導(dǎo)入到另外一個(gè)庫(kù)
場(chǎng)景:
DBA那邊給我導(dǎo)出了所有的存儲(chǔ)、函數(shù)等等對(duì)象的創(chuàng)建腳本,有上千個(gè)文件.
現(xiàn)在需要將這些對(duì)象創(chuàng)建腳本導(dǎo)入到另外一個(gè)庫(kù),如何解決呢?
手動(dòng)一個(gè)個(gè)執(zhí)行顯然不太現(xiàn)實(shí).
于是手動(dòng)寫(xiě)了一個(gè)批處理,將所有的文件形成一個(gè).SQL的腳本,最后以@生成的.SQL腳本方式導(dǎo)入到目標(biāo)庫(kù)中.
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盤(pán)CRY文件夾下,有如下類型的文件:
TEST.PRC
..
123\TEST1.FNC(有子文件夾123)
..
TEST2.VW
.
執(zhí)行該批處理后,最后生成的list.sql腳本文件內(nèi)容如下(執(zhí)行完批處理后會(huì)用默認(rèn)的編輯器自動(dòng)打開(kāi)該文件):
@@E:\cry\TEST.PRC
..
@@E:\cry\123\TEST1.FNC
..
@@E:\cry\TEST2.VW
..
打開(kāi)SQLPLUS,以指定用戶登錄數(shù)據(jù)庫(kù),然后執(zhí)行: (我的腳本文件生成在d盤(pán))
@D:\list.sql
這樣所有的對(duì)象就會(huì)自動(dòng)在指定用戶下生成.
---------------------------
注意:這樣生成的對(duì)象很多都是無(wú)效的,因?yàn)闆](méi)有按順序生成,所以建議在自動(dòng)執(zhí)行完后,再編譯一下所有無(wú)效的對(duì)象.
DBA那邊給我導(dǎo)出了所有的存儲(chǔ)、函數(shù)等等對(duì)象的創(chuàng)建腳本,有上千個(gè)文件.
現(xiàn)在需要將這些對(duì)象創(chuàng)建腳本導(dǎo)入到另外一個(gè)庫(kù),如何解決呢?
手動(dòng)一個(gè)個(gè)執(zhí)行顯然不太現(xiàn)實(shí).
于是手動(dòng)寫(xiě)了一個(gè)批處理,將所有的文件形成一個(gè).SQL的腳本,最后以@生成的.SQL腳本方式導(dǎo)入到目標(biāo)庫(kù)中.
OS環(huán)境:WINDOWS xp
腳本內(nèi)容如下:
復(fù)制代碼 代碼如下:
@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盤(pán)CRY文件夾下,有如下類型的文件:
TEST.PRC
..
123\TEST1.FNC(有子文件夾123)
..
TEST2.VW
.
執(zhí)行該批處理后,最后生成的list.sql腳本文件內(nèi)容如下(執(zhí)行完批處理后會(huì)用默認(rèn)的編輯器自動(dòng)打開(kāi)該文件):
@@E:\cry\TEST.PRC
..
@@E:\cry\123\TEST1.FNC
..
@@E:\cry\TEST2.VW
..
打開(kāi)SQLPLUS,以指定用戶登錄數(shù)據(jù)庫(kù),然后執(zhí)行: (我的腳本文件生成在d盤(pán))
@D:\list.sql
這樣所有的對(duì)象就會(huì)自動(dòng)在指定用戶下生成.
---------------------------
注意:這樣生成的對(duì)象很多都是無(wú)效的,因?yàn)闆](méi)有按順序生成,所以建議在自動(dòng)執(zhí)行完后,再編譯一下所有無(wú)效的對(duì)象.
相關(guān)文章
BAT批處理判斷服務(wù)是否正常運(yùn)行的方法(批處理命令綜合應(yīng)用)
批處理就是對(duì)某對(duì)象進(jìn)行批量的處理,通常被認(rèn)為是一種簡(jiǎn)化的腳本語(yǔ)言,它應(yīng)用于DOS和Windows系統(tǒng)中。這篇文章主要介紹了BAT批處理判斷服務(wù)是否正常運(yùn)行(批處理命令綜合應(yīng)用),需要的朋友可以參考下2020-02-02我裝了IIS了,可是又進(jìn)不去http://localhost 了
我裝了IIS了,可是又進(jìn)不去http://localhost 了...2006-12-12批處理統(tǒng)計(jì)文件夾內(nèi)的所有文件的數(shù)量和總大小的bat
這篇文章主要介紹了批處理統(tǒng)計(jì)文件夾內(nèi)的所有文件的數(shù)量和總大小的bat,需要的朋友可以參考下2016-12-12