2013-02-01 70 views
2

我有一個Oracle數據庫,所有字符列定義爲NVARCHAR或NCHAR或NCLOB,使用字符集UTF-16。NVARCHAR到VARCHAR之間的轉換

現在我想遷移到字符集UTF-8的新數據庫。由於它可以存儲unicode字符,所以如果我能夠導入數據轉換列類型,我就會徘徊。

我懷疑的原因是我知道如果不是空的,我不能在VARCHAR2中轉換NVARCHAR2列。

什麼是執行導入的最佳選擇。數據泵會抱怨如果我導入模式,修改列類型,然後我會導入數據?

謝謝

回答

0

是的數據泵是不會被你的建議的解決方案印象。您需要使用to_char()或強制轉換(MYNVARCHAR2作爲VARCHAR2)在導入之後或導出之前轉換數據類型。據我所知,任何不能轉換的字符都會變成'?',所以你必須小心不要轉換任何包含非英文字母字符的數據。

將數據原樣導入到不同的模式中,然後在將數據複製到正確的,修改的模式時轉換數據可能是最簡單的。即

IMPDP remap_schema = MYSCHEMA:tempschema

插入到myschema.mytable(選擇從tempschema.mytable myprimarykey,TO_CHAR(mynvarchar2));

但是,這顯然會佔用數據庫空間的兩倍。