1

考虑 SQLLoader 从路径读取输入数据文件,并根据控制文件中指定的描述将数据加载到表中。首先,创建要填充的表:

create table sql_loader_1 ( load_time date, field_1 Numeric, field_2 varchar2(10) 

示例控制文件:load_1.ctl

load data 
infile 'load_1.dat' "str '\r\n'" 
insert into table sql_loader_1 
( 
 load_time sysdate, 
 field_2 position( 1:10),
 field_1 position(11:20)
) 

请注意,位置 11 到 20 加载到 field_1 中,位置 1 到 10 加载到 field_2 中。字段 load_time 填充了负载的当前时间 (sysdate)。

这是数据。文件名 (load_1.dat) 已通过控制文件中的 infile 语句指定。

load_1.dat

0123456789abcdefghij
**********##########
foo         bar
here comes a very long line 
and the next is 
short 

在这里我想验证 field_1(数字数据类型),因为数据文件包含字符值(即)abcdefghij

4

1 回答 1

1

你说你想验证 field_1,但不清楚如果验证失败你期望什么动作?

另外两个想法:

  1. 您是否考虑过在控制文件中使用 BADFILE 选项来处理被拒绝的行?

  2. 无需在 SQL-Loader 中处理数字转换,而是将数据加载为文本并将其转换为数字/在数据库中处理一次。这可能更容易。

于 2011-01-24T12:49:30.630 回答