2013-10-10 52 views
1

我一直在嘗試將oracle數據庫遷移到sql server 2005失敗。我看到的問題是將Oracle「LONG」文本遷移到SQL varchar。在遷移完成後,我只能從Oracle數據庫中檢查的字段中獲取前100個字符的數據。我可以在SSMA for Oracle的數據視圖中看到超過100個字符的數據。經過一些較早的研究後,似乎可能需要設置顯式轉換規則,因此我將Oracle的「LONG」映射到SQL VARCHAR(8000),但即使目標表列現在已經是適當的大小(模式根據需要更改),插入的文本總是被截斷爲前100個字符。用於Oracle的SQL Server遷移助理截斷100個字符的文本

這個問題:LONG text in Oracle cut short by SSIS source?

是類似的,似乎指向SSIS可能與OLEDB驅動程序有問題,但我不知道這是否會有關(即使是這樣,我不不知道該怎麼辦才能在SSMA中糾正這一點)。

任何人SQL Server遷移助理專家有沒有什麼想法?

回答

1

最終的解決方案是編寫一個查詢將數據從表中提取出來,並將其作爲CLOB(即SSMA正確處理爲varchar(MAX)並且不截斷)作爲CLOB插入到新表中在Oracle功能。

我用在sqlplus類似於以下命令:

create table schema.my_new_table as 
select primary_key_field, to_lob(troublesome_long_column) troublesome_long_column 
from schema.original_table; 

由於我包括主鍵字段,我可以配合每一行回原始表。 「to_lob」函數將LONG轉換爲CLOB,這會使新表格中的數據轉換工作。

我會改變原來的表(並且只是添加了一個新的列與轉換後的數據),但我無法改變任何關於現有的表。