文章詳情頁(yè)
用Windows腳本宿主自動(dòng)化Oracle工具
瀏覽:142日期:2023-11-13 15:10:27
隨著新版Windows 操作系統(tǒng)的發(fā)布,命令提示符距離用戶(hù)越來(lái)越遙遠(yuǎn)了。但是 Oracle 所附帶的多數(shù)主要服務(wù)器工具依然是基于命令行的程序,所以完成簡(jiǎn)單的任務(wù)變得更加困難了。 然而,新版的 Windows 提供一個(gè)叫做 Windows 腳本宿主的工具,該工具可以通過(guò)執(zhí)行腳本(JScript 或者 Visual Basic Script)來(lái)自動(dòng)化這些任務(wù)。一些其它的數(shù)據(jù)庫(kù)環(huán)境依靠這些腳本完成很多在 Windows 環(huán)境下 Oracle 用戶(hù)不能完成的任務(wù)。 有很多資源教我們使用 Windows 腳本宿主的方法。在本文中我將局限于一個(gè)特定的例子:自動(dòng)化 Oracle 導(dǎo)入(import)工具從而能夠?qū)攵鄠€(gè)文件并提供命令行的語(yǔ)法。 為了執(zhí)行導(dǎo)入程序,我需要?jiǎng)?chuàng)建一個(gè)名為“WScript.Shell”的 COM 對(duì)象。對(duì)于執(zhí)行腳本所需要的每個(gè)命令行參數(shù),我簡(jiǎn)單地使用給定的參數(shù)構(gòu)造出命令行并使用 WScript.Shell 的 Run方法來(lái)執(zhí)行。 ' VBScript (dropper.vbs)Set WshShell = WScript.CreateObject('WScript.Shell')For Each arg in WScript.Arguments' Note 'imp' needs single quotes around filenames with spacesCmdString = 'imp userid=scott/tiger file='' & arg & '' rows=y ignore=y'ReturnCode = WshShell.Run(CmdString,1,True)Next// Jscript (dropper.js)var WshShell = WScript.CreateObject('Wscript.Shell');for (i=0;i{// Note 'imp' needs single quotes around filenames with spacesvar arg = WScript.Arguments.Item(i);var CmdString = 'imp userid=scott/tiger file='' + arg + '' rows=y ignore=y';var ReturnCode = WshShell.Run(CmdString,1,true);} 雖然這段腳本外表看起來(lái)只是簡(jiǎn)單地改進(jìn)功能——即在沒(méi)有輸入用戶(hù)名、口令或者命令行參數(shù)的情況下列出多個(gè)文件——但其實(shí)提供了更多的功能。在 Windows 中,當(dāng)你選擇一個(gè)對(duì)象并將其拖放到一些可執(zhí)行程序(像 VBScript 或者 JScript)之上時(shí),文件就會(huì)以命令行參數(shù)所選擇的文件名執(zhí)行。因此你可以選擇一個(gè) Oracle 導(dǎo)出文件然后使用鼠標(biāo)將其拖入到腳本上,腳本就會(huì)自動(dòng)地對(duì)這些文件運(yùn)行“imp”。也就是說(shuō)腳本可以允當(dāng)一個(gè)支持拖放的能夠裝數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的小程序。這樣對(duì)于那些習(xí)慣于 Windows 環(huán)境多過(guò)命令提示符的用戶(hù)來(lái)說(shuō)這個(gè)方式要友好地多。 你還可以把這個(gè)腳本擴(kuò)展,比如說(shuō)檢查文件的擴(kuò)展名,對(duì)于“.dmp”文件執(zhí)行“imp”,而對(duì)于“.sql”文件使用相同的用戶(hù)賬號(hào)執(zhí)行“sqlplus”。你可能還想要編寫(xiě)腳本訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)來(lái)自動(dòng)地將文件裝載到 Blob 或者 XML 庫(kù),或者為了保密隱藏用戶(hù)名和口令。最后,你可以修改 Run命令來(lái)隱藏控制臺(tái)窗口,防止其在運(yùn)行的時(shí)候跳出,或者說(shuō)并行地運(yùn)行導(dǎo)入(import)而不是每次導(dǎo)入一個(gè)文件。
標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
