我正在尝试使用SQL Loader通过控制文件将包含几条包含多字节(特殊)字符的记录的文件加载到Oracle表中。但是,如果我使用下面的控制文件,这会给我多字节字符错误。
LOAD DATA
CHARACTERSET UTF8
INTO TABLE MY_DB.T1
(
MESSAGE BOUNDFILLER POSITION(437:515) CHAR,
FILLER ":MESSAGE",
MY_DTE DATE "DDMMYYYYHH24MISS" "CASE WHEN 1=1 THEN NULL ELSE NULL END",
XTRA_TXT POSITION(516:755) CHAR
)
特殊字符在位置530。
在其他情况下,当我将FILLER字段放在MY_DTE字段之后的控制文件末尾而没有任何其他更改时,记录将成功加载。
此外,如果我保持控制文件不变并在特殊字符位置(530)之前添加任何字符,那么记录也会成功加载。
我不确定是什么真正引起了问题。 PS-表中字段FILLER的类型为VARCHAR2(79 BYTE)
。
答案 0 :(得分:0)
为了使其正常工作,请在使用sqlloader之前进行以下操作:
UTF-8
(在Windows中为chcp 65001
)NLS_LANG
环境变量设置为UTF-8,例如set NLS_LANG=.AL32UTF8
CHARACTERSET UTF8
。然后它应该工作。