Question

J'ai un script perl qui est l'insertion d'enregistrements à partir d'un fichier texte dans notre base de données. Chaque fois que le disque a un caractère multi-octets comme « RODR_Í_GUEZ ». Je reçois l'erreur ORA-01461, mais je ne suis nulle part près des 4000 caractères à passer de varchar2 à long

réglage:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

avant de connecter ne semble pas à l'aide.

En utilisant un client java (mySQreuiL SQL) et de l'écriture manuellement l'instruction INSERT INTO insère le disque très bien, donc je suis sûr que ce n'est pas comment la base de données est configurée.

Toutes les pensées?

Était-ce utile?

La solution

Vous voulez probablement définir la variable d'environnement NLS_LANG. Pour les systèmes Unix ish, il y a un script fourni dans $ ORACLE_HOME / server / bin appelé nls_lang.sh à la sortie une valeur raisonnable pour votre système, en fonction de la variable d'environnement LANG.

par exemple. pour mon système (LANG = fr_FR.UTF-8) l'équivalent paramètre Oracle est

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

Plus d'infos: http://forums.oracle.com/forums/thread .jspa? threadID = 381531

poste de Sergiusz il dit pratiquement tout ce que vous devez savoir: Je vais juste ajouter que le Perl DBD :: Oracle pilote est basé-OCI, et le pilote pur Java JDBC n'est pas, par conséquent, ils fonctionnent différemment dans le même environnement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top