4

テキストファイルからデータベースにレコードを挿入するperlスクリプトがあります。レコードに「RODR_Í_GUEZ」のようなマルチバイト文字が含まれている場合。エラーORA-01461を受け取りましたが、varchar2からlongに切り替える4000文字にはほど遠いです。

設定:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

接続する前に役に立たないようです。

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

何かご意見は?

4

1 に答える 1

5

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

Sergiuszの投稿には、知っておく必要のある事実上すべてが記載されています。PerlDBD :: OracleドライバーはOCIベースであり、純粋なJava JDBCドライバーはそうではないため、同じ環境では動作が異なります。

于 2010-12-12T21:43:43.977 に答える