在從sql導入oracle的工作中,大家的思維慣式都是首先采用sqlserver的dtswizard,實在是因為這個工具使用直覺、友善,而且在對非大表的操作中性能不錯,我也是這樣做的,但是在經過一系列的痛苦的操作後,我發現在使用的過程中還是有一些很重要的限制因素,很多人可能會遇到其中的一兩點,我這裡僅把我遇到的記錄下來,以作參考。
一、先說正常的操作流程
1.選擇源資料類型,這裡是sql,注意資料源,在次提醒,注意資料源,因為他讓我心痛

2.選擇目的的資料源,這裡需要特别指出,就是開始的時候我選錯了資料源,讓我白做了一個星期的工作,或者說讓我開拓了不适用dtswizard導資料的思路,雖然很痛苦,但是很指得。廢話少說,注意要選擇“oracle Provideer for OLE DB”,注意這裡還有一個“Microsoft OLEDB for Oracle”,我之前選擇的就是第二個,導緻後面在執行導出操作的時候,很多奇怪的錯誤。一定要選對啊。
3.填寫對應的oracle 資訊,注意資料源的地方使用transnames.ora中指定的名稱,允許儲存密碼勾選
4.預設點下一步,進入表的映射處理,這裡我們做表的字段的對應處理。
5.選中對應的表,點選編輯按鈕,進入後“編輯sql”,可以手工調整字段的資料類型。
這裡微軟做了一個不錯的事情,在sql中與一張對應表,裡面存儲了sql的資料類型和其他類型資料庫如oracle sysbase db2等的對應字段比對
SELECT * FROM msdb.dbo.MSdatatype_mappings 可以從這裡找到對應的字段類型比對。
6.下一步下一步,祈禱成功吧。
二、注意事項
1.dts對大表資料的支援不是很好。這裡說的大表資料不能簡單從資料量上定義,有的表資料量很大,但是列很少,dts依然可以很正常執行。我這裡試驗的标準是80萬條資料,幾十列,中間包含text字段,在執行的時候,效率低先不錯,執行好長時間後然後報錯很坑爹啊。而且資料沒導成功,表還給建立了,我得手動删除表才能再次執行,如果一次導入幾十幾百張表,中間一錯誤很是郁悶啊。
解決的辦法是使用oracle的sql loader雖然麻煩點,但是效率極高,10000+/s以上的性能,還能挑剔啥。
2.個别表執行導入不成功,提示異常錯誤。暈,我知道異常錯誤是啥,隻能用最傳統的辦法,導出資料,然後用toad導入,做好字段類型的設定,基本可以ok.
3.字段的設定:我這裡如果超過varchar2(2000)就報錯,沒辦法對很多varchar(4000)的資料類型隻能手工調整為nclob類型。
暫時想到這麼多,以後有别的在補充吧。
轉載于:https://www.cnblogs.com/tippoint/archive/2012/11/07/2758952.html