Нажатие ORA-01461 при вставке многобайтовых символов из perl в oracle

У меня есть perl-скрипт, который вставляет записи из текстового файла в нашу базу данных. Всякий раз, когда запись содержит многобайтовый символ, например "RODR_Í_GUEZ". Я получаю сообщение об ошибке ORA-01461, однако мне не хватает 4000 символов, чтобы переключиться с varchar2 на long

параметр:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

перед подключением не помогает.

Использование java-клиента (SQuirreL SQL) и ручное написание оператора INSERT INTO вставляет запись просто отлично, поэтому я уверен, что база данных настроена не так.

Есть предположения?


person Shawn    schedule 12.12.2010    source источник


Ответы (1)


Возможно, вы захотите установить переменную среды NLS_LANG. Для Unix-систем в $ORACLE_HOME/server/bin имеется сценарий с именем nls_lang.sh для вывода разумного значения для вашей системы на основе переменной среды LANG.

например для моей системы (LANG=en_GB.UTF-8) эквивалентная настройка Oracle

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

Дополнительная информация: http://forums.oracle.com/forums/thread.jspa?threadID=381531

В сообщении Сергиуша сказано практически все, что вам нужно знать: я просто добавлю, что драйвер Perl DBD::Oracle основан на OCI, а драйвер JDBC для чистой Java — нет, поэтому они работают по-разному в одной и той же среде.

person araqnid    schedule 12.12.2010