大量包含Insert語句的指令碼檔案批量執行匯入資料

ljm0211發表於2012-06-20
        今天,同事讓我幫忙處理這樣一個問題:PM提供了數十個.dat檔案,每個檔案中包含大量的Insert語句,比較大的dat檔案達到了700多M,如何將這些資料快速的匯入資料庫中?
        最直接的做法是執行這些Insert語句,不過擔心速度比較慢,或者大量的Insert語句執行,資料庫的撤銷段不夠大導致出錯。之前使用過Sql loader來進行過大量資料的匯入,考慮能否將Insert語句處理成為使用分隔符分隔的資料,以便sql loader進行描述,來使用sql loader匯入。檢視一下dat檔案發現,檔案中的Insert語句佔用了多行,而且檔案比較多,處理起來工作量很大,而且有一定難度。在瞭解了一下這部分工作需要在什麼時間完成之後,覺得時間還是比較寬裕的,還是覺得用批量執行dat中指令碼的方式來匯入會好一點。寫好批量處理指令碼,在伺服器上可以一直Run,不再需要人工干預,也大大減輕了工作量。具體做法如下:
        使用Actual Search工具取得dat檔名列表,通過UE處理成為能在sqlplus中執行的指令碼檔案batchrun.sql,檔案內容及格式如下(在sqlplus中執行sql指令碼檔案,需要使用"@"後接指令碼檔案全路徑):
@ Z:\tab1.dat
@ Z:\tab2.dat
……
……
……
@ Z:\tabn.dat
        現在還有一個問題就是如果指令碼在執行過程中某些sql出錯如何記入log,以便檢視。在sqlplus中使用spool命令來將執行結果記入log。
用法:
    在執行指令碼前執行:spool
    然後執行指令碼
    指令碼執行結束後執行命令關閉結果輸出:spool off
        這樣在批量執行的結果就寫入了檔案中。
        好了,批量指令碼在伺服器上跑吧,你呢?該幹什麼幹什麼去吧,呵呵!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733358/,如需轉載,請註明出處,否則將追究法律責任。

大量包含Insert語句的指令碼檔案批量執行匯入資料
請登入後發表評論 登入
全部評論

相關文章