您已在控制文件中定义了5个字段。您的字段以逗号结尾,因此除非指定TRAILING NULLCOLS,否则即使您正在通过SQL字符串加载具有序列值的ID字段,您在5个字段的每条记录中也需要5个逗号。
RE:评论者OP
这不是我的简短测试经验。有以下控制文件:
load data
infile *
into table T_new
fields terminated by "," optionally enclosed by '"'
(A,
B,
C,
D,
ID "ID_SEQ.NEXTVAL"
)
BEGINDATA
1,1,,,
2,2,2,,
3,3,3,3,
4,4,4,4,,
,,,,,
产生了以下的输出:
Table T_NEW, loaded from every logical record.
Insert option in effect for this table: INSERT
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
A FIRST * , O(") CHARACTER
B NEXT * , O(") CHARACTER
C NEXT * , O(") CHARACTER
D NEXT * , O(") CHARACTER
ID NEXT * , O(") CHARACTER
SQL string for column : "ID_SEQ.NEXTVAL"
Record 1: Rejected - Error on table T_NEW, column ID.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 2: Rejected - Error on table T_NEW, column ID.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 3: Rejected - Error on table T_NEW, column ID.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 5: Discarded - all columns null.
Table T_NEW:
1 Row successfully loaded.
3 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
1 Row not loaded because all fields were null.
注意,正确装入只排有5个逗号。即使是第三行,除ID之外的所有数据值都不存在,数据不会加载。除非我错过了什么...
我正在使用10gR2。
因为拉里这么说,所以才这样。这是预期的行为。 – 2010-10-12 17:25:02
没关系,我只是想了解它的机制。 – orbfish 2010-10-15 19:50:25