2010-12-12 9 views
4

テキストファイルのレコードをデータベースに挿入するperlスクリプトがあります。レコードに "RODR_Í_GUEZ"のようなマルチバイト文字があるときはいつでも。perlからoracleにマルチバイト文字を挿入するときにORA-01461を押す

$ENV{NLS_CHARACTERSET} = 'AL32UTF8'; 

を助けていないよう接続する前に:私は4000文字の長

設定にVARCHAR2から切り替えるために近くしかし、私はどこにもよん、エラーORA-01461を受けます。

Javaクライアント(SQuirreL SQL)を使用してINSERT INTO文を手動で記述するとレコードが正常に挿入されるため、データベースの構成方法とは異なることがあります。

どのような考えですか?

答えて

5

おそらくNLS_LANG環境変数を設定する必要があります。 Unix-ishシステムの場合、$ 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

Sergiuszの投稿は、あなたが知る必要があるすべては、実質的に言う:私はちょうどそれを追加しますPerl DBD :: OracleドライバはOCIベースであり、純粋なJava JDBCドライバは存在しないため、同じ環境では動作が異なります。

関連する問題