我正在将db从postgres迁移到oracle.I使用此命令创建csv文件:
\ copy ttt to'C:\ test \ ttt.csv'CSV DELIMITER','HEADER encoding'UTF8'引用为''';然后使用oracle sql loader我将数据放入oracle表中。 这一切都还可以,但我在某些描述中有这个字符在原始数据库中不存在。 db postgres的编码是UTF8,我在一台窗口机器上。 谢谢大家。 吉安皮耶罗
答案 0 :(得分:1)
在开始运行sqlloader之前
chcp 65001
set NLS_LANG=.AL32UTF8
chcp 65001
将您的cmd.exe
的代码页设置为UTF-8
(由sqlloader和sqlplus继承)set NLS_LANG=.AL32UTF8
告诉Oracle数据库“客户端使用UTF-8”如果没有这些命令,您将遇到这种情况(由于默认设置)
chcp 850
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
也许在您的PC上,您有代码页437而不是850,这取决于您的PC是美国还是欧洲,请参阅National Language Support (NLS) API Reference,列OEM codepage
您可以在PC设置中将NLS_LANG
也设置为环境变量,也可以在注册表中HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(对于32位)进行定义。 HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
您还可以更改cmd.ext
持久性的代码页,请参阅https://stackoverflow.com/a/33475373/3027266
有关NLS_LANG的详细信息,请参阅https://stackoverflow.com/a/33790600/3027266