標籤:
在實際工作中需要把SQL Server中的表匯入Oracle。之前嘗試過直接用SQL Server的DTS進行都沒問題。但這次因為資料量在千萬級所以報虛擬記憶體不足。最後通過SQL Server匯出txt檔案和Oracle sqlldr匯入的方案解決。
一.SQL Server匯出txt檔案
方法1.使用DTS進行匯出。
方法2.使用BCP命令進行匯出,具體可以查看園內文章:SQL Server中bcp命令的用法以及資料大量匯入匯出
通過以上方法可以產生txt檔案
二.Oracle sqlldr匯入txt檔案
1.建立sqlldr的.ctl檔案,具體參數命令可以查看相關文章:用Oracle sqlldr匯入文字檔TXT 總結 Oracle sqlldr匯入資料使用預設值和提高效能的方法
OPTIONS(skip_index_maintenance=TRUE,direct=true,BINDSIZE=20971520,READSIZE=20971520,ERRORS=-1,ROWS=500000)--unrecoverableload data --CHARACTERSET AL32UTF8LOAD DATA INFILE ‘c:\xxxxxe.txt‘ ---------資料檔案,即txt檔案 Append INTO TABLE Demo7.TMS_BRANCHCODE2 -----表名,全路徑 FIELDS TERMINATED BY X‘09‘ -----資料用定位字元分割 TRAILING NULLCOLS ( ID, ------表中欄位 Branch_Plant, SO_Number,Trip_Number,Shippment_Date --"to_date(:Shippment_Date,‘‘‘yyyy-mm-dd hh24:mi:ss‘‘‘)"Sold_to,Sold_to_Name,Ship_to,Ship_to_Name,BarCode_Info,Barcode_Seg_1,Barcode_Seg_2,Barcode_Seg_3,Barcode_Seg_4,Barcode_Seg_5, Last_Updated_Time --"to_date(:Shippment_Date,‘‘‘yyyy-mm-dd hh24:mi:ss‘‘‘)" )
2.運行.ctl檔案匯入資料,開啟CMD運行如下檔案
C:/>sqlldr userid=system/[email protected] serviceName control=c:\xxx.ctl
SQL Server 2012大資料匯入Oracle的解決方案