Sqlloader when子句包含null

时间:2015-07-13 09:47:38

标签: oracle oracle11g sql-loader

我正在尝试将一些数据加载到表中,但数据源有一个我要删除的页脚记录以及我想要加载的NULL值

我的控制文件目前有:

echo "WHEN field1 <> 'FOOTER'"

但是这会丢弃空记录(所有其他记录都按预期工作)。

有没有办法包含&#39;或&#39;运算符,或者在单个控制文件中作为两步加载运行,例如步骤1.处理除“FOOTER&#39;”之外的所有记录。第2步 - 处理所有NULL记录。

2 个答案:

答案 0 :(得分:0)

你可以试试这个......

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

答案 1 :(得分:0)

我设法解决了这个问题: 解决方案是将其视为两个单独的负载,因此我的控制文件看起来像:

echo "APPEND INTO TABLE table.t1"
echo "WHEN (1:1)=' '"
echo "("
....
echo ")"
echo "INTO TABLE table.t1"
echo "WHEN field != 'FOOTER'"
echo "("
....

然后处理NULL记录,然后处理非页脚记录。我很难将固定长度的field1与NULL值匹配 - 但是需要进行单一长度检查。

希望这能解决其他任何挣扎的问题。