oracle NVARCHAR到VARCHAR之间的转换

5n0oy7gb  于 2022-12-03  发布在  Oracle
关注(0)|答案(1)|浏览(1438)

我有一个Oracle数据库,其中所有字符列都使用字符集UTF-16定义为NVARCHAR、NCHAR或NCLOB。
现在我想迁移到一个新的数据库,它有字符集UTF-8。因为它可以存储unicode字符,我想知道我是否能够导入数据转换列类型。
我怀疑的原因是,我知道如果NVARCHAR 2列不为空,我就不能转换VARCHAR 2中的NVARCHAR 2列。
什么是执行导入的最佳选项?如果我导入模式,修改列类型,然后再导入数据,数据泵会抱怨吗?
谢谢

l3zydbqr

l3zydbqr1#

是的,datapump不会接受你的解决方案。你需要使用to_char()或cast(MYNVARCHAR 2 as VARCHAR 2)在导入或导出之前转换数据类型。据我所知,任何不能转换的字符都会被转换成'?',所以你必须小心不要转换任何包含非英语字母字符的数据。
最简单的方法可能是直接将数据导入到不同的模式中,然后在将数据复制到正确的、修改过的模式中的同时进行转换。
impdp重新Map模式=我的模式:临时模式
插入到我的模式.我的表(选择我的主键,从tempschema.mytable到_char(mynvarchar 2));
但这显然会占用数据库中两倍的空间。

相关问题