在导入数据的时候已经多次出现过这个错误了:
ORA-01461 can bind a LONG value only for insert into a LONG column
可是我的表里没有LONG型字段,传入的数据也没有超过超过字段的长度。
经过查找,当向ORACLE中插入或更新数据时,报出以上错误。可能有以下几种原因:
[1]插入到字符串长度大于4000字节。
[2]插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。
[3]数据库与客户端的JDBC驱动不匹配。
而我遇到的就是字符集不匹配的问题。就是说,数据库的字符集(NLS_CHARACTERSET),与应用客户端的字符集必须匹配。
在导入数据之前要保证客户端字符集和数据库字符集匹配。
修改客户端字符集比较简单:客户端的字符集的设置,可能是参数文件,环境变量或者是注册表,在msdos环境下,用命令set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK即可修改为字符集“AMERICAN_AMERICA.ZHS16GBK”。
修改数据库字符集则比较麻烦:8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;
Alter database open;
Alter database character set zhs16gbk;