Oracle Sqlloader when子句包含null

Oracle Sqlloader when子句包含null,oracle,oracle11g,sql-loader,Oracle,Oracle11g,Sql Loader,我试图将一些数据加载到一个表中,但是数据源有一个我想要删除的页脚记录,还有一个我想要加载的空值 我的控制文件当前有: echo "WHEN field1 <> 'FOOTER'" echo“当字段1'页脚'时” 但这是在丢弃空记录(所有其他记录都按预期工作) 是否有方法包含“或”运算符,或在单个控制文件(例如步骤1)中以两步加载的方式运行此操作。处理除“页脚”步骤2之外的所有记录-处理所有空记录。您可以尝试此 load data infile ... into table ...

我试图将一些数据加载到一个表中,但是数据源有一个我想要删除的页脚记录,还有一个我想要加载的空值

我的控制文件当前有:

echo "WHEN field1 <> 'FOOTER'"
echo“当字段1'页脚'时”
但这是在丢弃空记录(所有其他记录都按预期工作)

是否有方法包含“或”运算符,或在单个控制文件(例如步骤1)中以两步加载的方式运行此操作。处理除“页脚”步骤2之外的所有记录-处理所有空记录。

您可以尝试此

load data
infile ...
into table ...
...
...
when some_column != 'FOOTER'
...
fields terminated by ', '

我已经设法解决了这个问题: 解决方案是将其视为两个独立的加载,因此我的控制文件如下所示:

echo "APPEND INTO TABLE table.t1"
echo "WHEN (1:1)=' '"
echo "("
....
echo ")"
echo "INTO TABLE table.t1"
echo "WHEN field != 'FOOTER'"
echo "("
....
然后处理空记录,然后处理非页脚记录。我很难将字段1的固定长度与空值进行匹配-但是需要进行一次长度检查


希望这也能回答任何其他苦苦挣扎的人的问题。

我尝试过这个方法,但没有效果。我可以删除when子句,它会按预期处理所有事情(单脚记录被丢弃),但是如果我可以帮助的话,我不希望每次运行这个过程时都有一个被丢弃的文件。我有:echo“追加到表中。t1“echo”当field1!=“FOOTER”“echo”字段以“,”echo“(“echo”field1位置(01:07)\“REPLACE(UPPER(:field1),”)\”,“echo”field2位置(09:14)\“DECODE(:field2,'000000',NULL,tou DATE(:field2,'DDMMYY')))\”),“…还有一个“LOAD=n”组件添加到OPTION子句中,该子句允许您指定要加载的行数。如果使用load=也将跳过页脚。请参阅此处的OPTION子句:是,我查看了此选项,但是记录的数量是可变的,我还查看了从输入文件中删除页脚(重定向到另一个文件以保留原始记录)然而,这些并不是我想要采用的方法,因为我希望表之间的自动加载过程尽可能相似,唯一的区别是所使用的控制文件,以便于调试和增强。