我有一个perl脚本,它将文本文件中的记录插入到我们的数据库中。每当记录具有像“RODR_Í_GUEZ”这样的多字节字符时。我收到错误ORA-01461,但是我没有接近4000个字符从varchar2切换到long
设置:
$ENV{NLS_CHARACTERSET} = 'AL32UTF8';
在连接之前似乎没有帮助。
使用java客户端(SQuirreL SQL)并手动编写INSERT INTO语句插入记录就好了,所以我确定不是数据库的配置方式。
有什么想法?
答案 0 :(得分:5)
您可能想要设置NLS_LANG环境变量。对于Unix-ish系统,在$ ORACLE_HOME / server / bin中提供了一个名为nls_lang.sh
的脚本,用于根据LANG环境变量为系统输出合理的值。
e.g。对于我的系统(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驱动程序则不是,因此它们的工作方式不同环境。