我有一个使用字符集 UTF-16 定义为 NVARCHAR 或 NCHAR 或 NCLOB 的所有字符列的 Oracle DB。
现在我想迁移到具有字符集 UTF-8 的新数据库。由于它可以存储 unicode 字符,因此我在徘徊是否能够导入数据转换列类型。
我怀疑的原因是我知道如果不为空,我无法在 VARCHAR2 中转换 NVARCHAR2 列。
执行导入的最佳选择是什么。如果我导入架构、修改列类型然后导入数据,数据泵会抱怨吗?
感谢
是的,datapump 不会对您提出的解决方案印象深刻。您需要使用 to_char() 或 cast( MYNVARCHAR2 as VARCHAR2 ) 在导入之后或导出之前转换数据类型。据我所知,任何无法转换的字符都将被转换为“?”,因此您必须注意不要转换任何包含非英文字母字符的数据。
将数据按原样导入不同的模式可能是最简单的,然后在将数据复制到正确的修改模式的同时转换数据。IE
impdp remap_schema=myschema:tempschema
插入 myschema.mytable(从 tempschema.mytable 中选择 myprimarykey,to_char(mynvarchar2));
但这显然会占用数据库中两倍的空间。