当NULL为时,SQL Loader不插入数据

时间:2014-04-12 11:08:14

标签: oracle sql-loader

我有下表:

Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
NAME                                               VARCHAR2(230)
TEST                                               VARCHAR2(230)
ID6                                                VARCHAR2(230)
ID4                                                VARCHAR2(230)
ID1                                                VARCHAR2(230)
ID2                                                VARCHAR2(230)
ID3                                                VARCHAR2(230)
ID5                                                VARCHAR2(230)
ID                                                 NUMBER(38)

案例1:

现在我尝试通过sqlldr插入数据。它在为所有列提供值时加载数据,如下所示:

a,b,c,d,e,f,g,1
a,b,c,d,e,f,g,1
a,b,c,d,e,f,g,1
a,b,c,d,e,f,g,1
a,b,c,d,e,f,g,1

案例2:

当我尝试加载这样的数据时:

a,,,,,,,

未加载数据。

我也试过这种方式:

a,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL

但收到了消息:

  

达到提交点 - 逻辑记录计数1

当我对该表进行计数时,它仍为0。

任何人都可以帮我加载案例2中的数据吗?

我的控制文件:

LOAD DATA INFILE 'temp.txt' 
BADFILE 'temp_log.txt' 
INTO TABLE a 
FIELDS TERMINATED BY "," (
name,
test,
id6,
id4,
id1,
id2,
id3,
id5,
id)

1 个答案:

答案 0 :(得分:0)

尝试以下代码 我试过了。工作

在temp.txt

中采集样本数据进行测试
a,,,,,,,

使用" 尾随nullcols "用于在表中插入空数据

LOAD DATA 
INFILE 'temp.txt' 
BADFILE 'temp_log.txt' 
INTO TABLE a 
FIELDS TERMINATED BY "," 
trailing nullcols
(name,
test,
id6,
id4,
id1,
id2,
id3,
id5,
id)

编写控制文件。让控制文件保存为" samp.ctl "并且数据文件保存为temp.txt。

在命令提示符中使用以下命令执行该文件 语法将是

sqlldr用户名/密码@database control = control_path_file log = log_path_file

sqlldr abc/abc@orcl123 control=samp.ctl log=log_samp.log

结果将是 达到提交点 - 逻辑记录计数1