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-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 驱动程序不是,因此它们在相同环境中的工作方式不同。

于 2010-12-12T21:43:43.977 回答