3

我有一个使用字符集 UTF-16 定义为 NVARCHAR 或 NCHAR 或 NCLOB 的所有字符列的 Oracle DB。

现在我想迁移到具有字符集 UTF-8 的新数据库。由于它可以存储 unicode 字符,因此我在徘徊是否能够导入数据转换列类型。

我怀疑的原因是我知道如果不为空,我无法在 VARCHAR2 中转换 NVARCHAR2 列。

执行导入的最佳选择是什么。如果我导入架构、修改列类型然后导入数据,数据泵会抱怨吗?

感谢

4

1 回答 1

0

是的,datapump 不会对您提出的解决方案印象深刻。您需要使用 to_char() 或 cast( MYNVARCHAR2 as VARCHAR2 ) 在导入之后或导出之前转换数据类型。据我所知,任何无法转换的字符都将被转换为“?”,因此您必须注意不要转换任何包含非英文字母字符的数据。

将数据按原样导入不同的模式可能是最简单的,然后在将数据复制到正确的修改模式的同时转换数据。IE

impdp remap_schema=myschema:tempschema

插入 myschema.mytable(从 tempschema.mytable 中选择 myprimarykey,to_char(mynvarchar2));

但这显然会占用数据库中两倍的空间。

于 2014-02-18T12:00:18.740 回答