2010年10月28日 星期四

Linux+Oracle 資料匯入

當資料量相當大的時候,PL/SQL Developer的Text Importer可真是一點也派不上用場。
雖然圖形介面真的很親切,但是透過SQLLoader快速把大量資料匯入Oracle,才真的是爽快!


用SQLLoader把資料載入的步驟
1.準備來源資料。如果是檔案的話,就先使用WINSCP上傳到主目錄。

2.確認帳號權限

3.建立目的資料表

4.設定control file(結尾是.ctl)

OPTIONS ( ERRORS=100 )
Load Data
Truncate
Into Table temp_table
Fields Terminated BY ','
Trailing NullCols
(ID, OrderDate DATE "YYYY/MM/DD" , Price, Quantity, Shipping_Price, Status, Total_Price, Pay_Time DATE "DD-MON-YY HH.MI.SS AM")

※如果也是從Oracle匯出的文字檔,在沒有指定格式之下,預設會將日期欄位輸出成"DD-MON-YY HH.MI.SS AM"。初次見面,真是陌生~
※如果註記Trailing NullCols,資料在無法對應到欄位時,欄位會呈現空值。今天意外在一篇很棒的文章中找到更多資訊:http://9host.cn/shujuku/200742218541014614.html

5.設定環境變數
   1.1.設定Oracle_Home,DB的安裝目錄
   1.2.設定NLS_LANG,也就是語系
   1.3.設定TNS_ADMIN,也就是TNS(Transparent Network Substrate,Oracle的網路架構,提供統一介面,允許應用程式存取網路協定)

6.執行
-bash-3.2$ sqlldr userid=myid/mypass@DB control=ctrl_201009.ctl data=data_201009.txt log=log_201009.log 

7.其他
   7.1.檢視log(結尾是.log)
         7.1.1先列出目錄下的檔案名稱
-bash-3.2$  ls
         7.1.2.讀取檔案內容
-bash-3.2$  less ctrl_1028.log