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