Oracle NVARCHAR到VARCHAR之间的转换

Oracle NVARCHAR到VARCHAR之间的转换,oracle,utf-8,nvarchar,Oracle,Utf 8,Nvarchar,我有一个Oracle DB,其中所有字符列都定义为NVARCHAR、NCHAR或NCLOB,使用字符集UTF-16 现在我想迁移到一个具有字符集UTF-8的新数据库。因为它可以存储unicode字符,所以我想知道是否能够导入转换列类型的数据 我怀疑的原因是我知道如果VARCHAR2中的NVARCHAR2列不是空的,我就无法转换它 执行导入的最佳选项是什么。如果我导入模式,修改列类型,然后导入数据,datapump会抱怨吗 谢谢是的,datapump对您提出的解决方案不感兴趣。您需要使用to_ch

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

现在我想迁移到一个具有字符集UTF-8的新数据库。因为它可以存储unicode字符,所以我想知道是否能够导入转换列类型的数据

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

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


谢谢

是的,datapump对您提出的解决方案不感兴趣。您需要使用to_char或将MYNVARCHAR2转换为VARCHAR2,以便在导入之后或导出之前转换数据类型。据我所知,任何无法转换的字符都将转换为“?”,因此您必须小心不要转换任何包含非英语字母字符的数据

可能最简单的方法是将数据原样导入到不同的模式中,然后在将数据复制到正确的、修改过的模式时转换数据。i、 e

impdp remap_schema=myschema:tempschema

插入myschema.mytable,选择myprimarykey,从tempschema.mytable中选择charmynvarchar2

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