在導入數據的時候已經多次出現過這個錯誤了:
經過查找,當向ORACLE中插入或更新數據時,報出以上錯誤??赡苡幸韵聨追N原因:
[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;
ORA-01461 can bind a LONG value only for insert into a LONG column
可是我的表里沒有LONG型字段,傳入的數據也沒有超過超過字段的長度。經過查找,當向ORACLE中插入或更新數據時,報出以上錯誤??赡苡幸韵聨追N原因:
[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;