2017-07-28 1 views
0

Je la migration d'un db de Postgres oracle.I créer des fichiers csv avec cette commande:caractère étrange dans la migration de postgres à Oracle (Ansi)

\ copie ttt à « C: \ test \ ttt.csv 'CSV DELIMITER', 'HEADER encoding' UTF8 'citation comme' '', puis avec Oracle loader sql je mets des données dans les tables Oracle Tout va bien mais j'ai dans une certaine description ce caractère qui n'était pas dans la base de données originale le codage de db postgres est UTF8 et je suis sur une machine de fenêtre. Merci à tous. Gian Piero

+0

Avant de commencer à courir sqlloader 'set NLS_LANG = .AL32UTF8' et' chcp 65001' –

+0

Ok. Cela fonctionne. Merci. Deux questions: 1) comprenez-vous pourquoi il y a ce problème? 2) Mon chargeur sql est déclenché par un programme java Pensez-vous qu'il suffit d'exécuter cette commande à partir de la ligne de commande à partir de laquelle vous lancerez java ou devrais-je l'exécuter à partir du programme lui-même? Quoi qu'il en soit, je fais des tests maintenant –

+0

Fourni plus d'informations comme réponse. –

Répondre

1

Avant de commencer à courir sqlloader

chcp 65001  
set NLS_LANG=.AL32UTF8 
  • chcp 65001 ensembles codepage de votre cmd.exe à UTF-8 (qui est héritée par sqlloader et sqlplus)
  • Avec set NLS_LANG=.AL32UTF8 vous dire la base de données Oracle "Le client utilise UTF-8"

Sans ces commandes vous auriez cette situation (en raison de défauts)

chcp 850 
set NLS_LANG=AMERICAN_AMERICA.US7ASCII 

Peut-être que sur votre PC, vous avez codepage 437 au lieu de 850, cela dépend si votre PC est des États-Unis ou en Europe, voir National Language Support (NLS) API Reference, colonne OEM codepage

Vous pouvez définir NLS_LANG également variable d'environnement dans les paramètres du PC ou vous pouvez le définir dans le Registre à HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG (pour 32 bits), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG

Vous pouvez également modifier votre page de code cmd.ext persistante, voir https://stackoverflow.com/a/33475373/3027266

Pour plus de détails sur NLS_LANG voir https://stackoverflow.com/a/33790600/3027266