如何验证控制文件中的数据?

时间:2011-01-24 09:37:20

标签: oracle sql-loader

考虑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)。

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

load_1.dat

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

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

1 个答案:

答案 0 :(得分:1)

你说你想验证field_1,但是如果验证失败,你还不清楚你期望采取什么行动?

另外两个想法:

  1. 您是否考虑在控制文件中使用BADFILE选项拒绝行?

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