Frage

ich einen Perl-Skript, das Datensätze aus einer Textdatei in unsere Datenbank eingefügt wird. Jedes Mal, wenn der Datensatz hat ein Multibyte-Zeichen wie „RODR_Í_GUEZ“. Ich erhalte den Fehler ORA-01461, aber ich bin noch lange nicht die 4000 Zeichen Wechsel von varchar2 zu lange

Einstellung:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

vor dem Anschluss scheint nicht zu helfen.

einen Java-Client (SQuirreL SQL) verwenden und manuell die INSERT INTO-Anweisung Schreiben fügt den Datensatz ganz gut, also bin ich sicher, dass es nicht, wie die Datenbank konfiguriert ist.

Alle Gedanken?

War es hilfreich?

Lösung

Sie wollen wahrscheinlich die Umgebungsvariable NLS_LANG einzustellen. Für Unix-ish-Systemen gibt es ein Skript in $ ORACLE_HOME / server / bin genannt nls_lang.sh zur Ausgabe eines angemessenen Wert für Ihr System geliefert wird, auf der Grundlage der Umgebungsvariable LANG.

z. für mein System (LANG = en_GB.UTF-8) die äquivalente Oracle Einstellung ist

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

Mehr Infos: http://forums.oracle.com/forums/thread .jspa? threadID = 381.531

Sergiusz die Post dort sagt praktisch alles müssen Sie wissen: Ich werde nur hinzufügen, dass die Perl DBD :: Oracle-Treiber ist OCI-basiert, und die pure-Java-JDBC-Treiber ist nicht, damit sie funktionieren anders in der gleichen Umwelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top