SQL*Loader,是Oracle資料庫系統提供的一個資料移植工具,它提供了一個命令列的方式,可以讓使用者成批的向Oracle資料庫中裝入大量資料。雖然Oracle資料庫與SQL Server資料庫都提供了圖形介面的匯入工具,但是,圖形介面有一個很大的不足,就是不能夠直接給前景程式引用。而命令列的匯入模組,則可以直接被前台的應用程式所調用,這也是SQL*Loader之所以成為Oracle資料庫系統最通用的工具之一的原因。
SQL*Loader其具有如下的優勢
一是可以直接被前台應用程式調用。如開源的COMPIERE企業管理應用系統,其就是採用Oracle的資料庫系統。在COMPIERE這個應用系統中,有一項很強大的功能,就是資料匯入功能。其不但可以按現有的模板匯入資料,而且,使用者還可以自訂匯入的格式。這對於系統在基礎資料匯入的時候,非常的有用。 但是,其這個功能的開發,確很簡單,因為其基本上都是直接調用後台資料庫系統中的SQL*Loader模組。命令列模式的匯入模組,可以直接被前台的應用程式調用,這是其最大的優勢。
二是可以從既定檔案中大量匯入資料。利用SQL*Loader工具,可以從既定檔案中,如逗號分隔字元檔案或者固定寬度的檔案,把這些檔案中的大量記錄按照一定的規則匯入到Oracle資料庫系統中去。這個匯入的效率比圖形介面來說,也要高的多。
三是可以實現把多個資料檔案合并成一個檔案。我們都知道,Oracle資料庫中,可以把一個資料庫應用所需要的資料存放在多個資料檔案中,以追求比較高的資料庫效能,以及比價高的資料庫安全性。但是,有時候,我們也可能需要把這幾個資料檔案合二為一,此時,就可以採用SQL*Loader工具把它們進行合并。
四是修複、分離壞的記錄。有時候,我們需要匯入的資料跟Oracle資料庫系統的資料表可能會存在一些衝突,導致資料匯入的失敗。如可能需要匯入的資料欄位太長,超過了資料表的最大長度限制,此時,就會導致資料匯入的失敗。利用SQL*Loader匯入工具,可以把這些不符合規則的記錄分離出來,存放在一個獨立的檔案中。而符合規則的資料,則可以被正常的匯入。如此的話,就可以提高資料匯入的準確性。
下面,我們來看看具體如何使用這個Oracle資料庫系統為我們準備的好幫手。
一般SQL*Loader模組至少需要兩個檔案,才可以使用
一是資料檔案。資料檔案,顧名思義,就是我們需要匯入的資料集合。對於Oracle系統來說,其可以支援多個格式的資料檔案,如逗號分隔字元或者TAB鍵分隔字元或者分號分隔字元等文字檔,也支援固定寬度的文字檔等等。不過在實際應用中,用的最多的還是逗號分隔的文字檔。
二是控制檔案。控制檔案其起的作用就是建立資料檔案與Oralce資料表欄位之間的一一對應關係。簡單的說,把資料檔案中的某個內容放在Oracle資料表中的那個欄位上,這就是控制檔案所起的主要作用。
另外還有一個檔案,也非常有用,叫做壞檔案。如果我們在命令列工具中,指定了這個壞檔案,則匯入處理程序中,一些匯入不成功的記錄,則會被儲存在這個壞檔案中。所以,對於資料庫管理員來說,這個檔案有時候往往比資料匯入記錄檔更加的實用。所以,筆者建議,若企業對於資料匯入的準確性要求比較高的畫,則在使用SQL*Loader匯入資料的時候,最好能夠指定這個壞檔案。這對於我們後續核對匯入資料的準確性,具有很大的實用價值。