NVARCHAR 到 VARCHAR 之间的转换



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

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

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

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

谢谢

是的,数据泵对您提出的解决方案不感兴趣。您需要使用 to_char() 或 cast( MYNVARCHAR2 作为 VARCHAR2 )在导入后或导出之前转换数据类型。据我所知,任何无法转换的字符都会变成"?因此,您必须注意不要转换任何包含非英文字母字符的数据。

最简单的方法是将数据按原样导入到不同的架构中,然后在将数据复制到正确的、修改后的架构的同时转换数据。

impdp remap_schema=myschema:tempschema

插入到 myschema.mytable

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

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

最新更新