加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

需要Oracle sqlldr TRAILING NULLCOLS,但为什么?

发布时间:2020-12-12 13:49:25 所属栏目:百科 来源:网络整理
导读:我有一个严重的sqlldr问题困扰着我.我的控制文件看起来像这样: load datainfile 'txgen.dat'into table TRANSACTION_NEWfields terminated by "," optionally enclosed by '"'TRAILING NULLCOLS( A,B,C,D,ID "ID_SEQ.NEXTVAL") 数据是这样的: a,b,c,a,da,d
我有一个严重的sqlldr问题困扰着我.我的控制文件看起来像这样:
load data
infile 'txgen.dat'
into table TRANSACTION_NEW
fields terminated by "," optionally enclosed by '"'
TRAILING NULLCOLS
( A,B,C,D,ID "ID_SEQ.NEXTVAL"
)

数据是这样的:

a,b,c,a,d
a,d

如果我没有把TRAILING NULLCOLS放在里面,我会得到“逻辑记录结束之前未找到的列”错误.但是尽管有一些列为空,但是逗号都是这样的,所以我看不到sqlldr的错误解释输入文件的原因,而不是从数据库序列生成ID.

这个语法之前没有空列 – 为什么一个空列会导致sqlldr没有到达生成的列?

我有它的工作,我只是想明白为什么!

您已经在控制文件中定义了5个字段.您的字段由逗号终止,因此,除非指定了TRAILING NULLCOLS,否则即使您通过SQL字符串加载具有序列值的ID字段,则在5个字段的每个记录中都需要5个逗号.

RE:评论由OP

这不是我经历一个短暂的考验.使用以下控制文件:

load data
infile *
into table T_new
fields terminated by "," optionally enclosed by '"'
( A,ID "ID_SEQ.NEXTVAL"
)
BEGINDATA
1,1,2,3,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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读