我遷移數據庫從Postgres而言,要oracle.I創建與此命令的CSV文件:從Postgres的到Oracle遷移奇怪字符(ANSI)
\複製到TTT「C:\測試\ ttt.csv 'CSV DELIMITER','HEADER encoding'UTF8'quote as''';然後用oracle sql loader將數據放入oracle表中 沒關係,但我在某些描述中說明這個字符不在原始數據庫中 DB的Postgres編碼是UTF8我就是一個窗口的機器上。 感謝所有。 吉安皮耶羅
我遷移數據庫從Postgres而言,要oracle.I創建與此命令的CSV文件:從Postgres的到Oracle遷移奇怪字符(ANSI)
\複製到TTT「C:\測試\ ttt.csv 'CSV DELIMITER','HEADER encoding'UTF8'quote as''';然後用oracle sql loader將數據放入oracle表中 沒關係,但我在某些描述中說明這個字符不在原始數據庫中 DB的Postgres編碼是UTF8我就是一個窗口的機器上。 感謝所有。 吉安皮耶羅
開始之前SQLLOADER運行
chcp 65001
set NLS_LANG=.AL32UTF8
chcp 65001
套你cmd.exe
到UTF-8
set NLS_LANG=.AL32UTF8
(由SQLLOADER和SQLPLUS繼承)的代碼頁你告訴Oracle數據庫 「客戶端使用UTF-8」無這些命令你會有這種情況(由於默認)
chcp 850
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
也許你的電腦上,你有代碼頁437,而不是850,這取決於你的電腦是否是美國或歐洲,看到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
開始之前SQLLOADER運行'NLS_LANG = .AL32UTF8'和'CHCP 65001' –
好的設置。它的工作。感謝你。兩個問題:1)你明白爲什麼有這個問題? 2)我的sql加載程序是由一個java程序觸發你認爲從命令行運行這個命令足以啓動java或者我應該從程序本身運行它嗎?無論如何,我現在正在做測試 –
提供更多信息作爲答案。 –