NVARCHAR 到 VARCHAR 之间的转换

问题描述 投票:0回答:1

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

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

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

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

谢谢

oracle utf-8 nvarchar
1个回答
0
投票

是的,数据泵不会对您提出的解决方案印象深刻。您需要在导入之后或导出之前使用 to_char() 或cast( MYNVARCHAR2 as VARCHAR2 ) 来转换数据类型。据我所知,任何无法转换的字符都会变成“?”,所以你必须小心不要转换任何包含非英文字母字符的数据。

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

impdp remap_schema=myschema:tempschema

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

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

© www.soinside.com 2019 - 2024. All rights reserved.