当使用SQL Loader将CSV文件(从Excel生成)上载到Oracle数据库时,我有以下错误:
记录1:拒绝-表TBL01上的错误,列性别。 ORA-12899:值过大,列“TST”.“TBL01”.“性别”(实际值: 2,最大值: 1)
请指导我正确的方式来编码控制文件。
CSV文件内容

控制文件内容
LOAD DATA
CHARACTERSET AL32UTF8
INFILE TBL01.csv
INTO TABLE TBL01
FIELDS TERMINATED BY ','
(ID, INITIALS, GENDER)TBL01结构
Name Null Type
------ ---- ------------
ID NUMBER
INITIALS VARCHAR2(30)
GENDER CHAR(1) 发布于 2014-12-17 07:19:48
来自@Multisync的讨论:
他/她建议(这是可行的,但对我的情况所涉及的许多修改):
最简单的解决方案是在每一行的最后一列后面加上逗号。 通常一条csv线看起来是: 1,3,4,5,6; 在这种情况下,可以在控制文件中使用以“;”结尾的字段
最后,在我的控制文件中添加了另一行,并解决了问题,因为每个csv行的末尾都有回车。
LOAD DATA
CHARACTERSET AL32UTF8
INFILE TBL01.csv
INTO TABLE TBL01
FIELDS TERMINATED BY ','
(ID,
INITIALS,
GENDER TERMINATED BY '\r')发布于 2014-11-20 15:06:00
如果有多余的空格,试着修剪一下,但我怀疑字符可能是个问题?我没有这方面的经验,但是如果您使用的是一个2字节的字符集,并且试图将它放在表中的一个字节中,那么这可能是一个问题吗?无论如何要核实的东西。确保数据库使用的字符集与在控制文件中指定的字符集相同。
LOAD DATA
CHARACTERSET AL32UTF8
INFILE TBL01.csv
INTO TABLE TBL01
FIELDS TERMINATED BY ','
(ID,
INITIALS,
GENDER "TRIM(:GENDER)"
)https://stackoverflow.com/questions/27034097
复制相似问题