Sqlloader when 子句包含 null
Sqlloader when clause to include null
我正在尝试将一些数据加载到 table,但是数据源有一个我想删除的页脚记录以及我想要加载的 NULL 值
我的控制文件目前有:
echo "WHEN field1 <> 'FOOTER'"
但这会丢弃空记录(所有其他记录都按预期工作)。
有没有办法包含 'or' 运算符,或者将此 运行 作为单个控制文件中的两步加载,例如步骤 1. 处理除 'FOOTER' 之外的所有记录 步骤 2 - 处理所有 NULL 记录。
你可以试试这个...
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 "("
....
然后处理 NULL 记录,然后处理非页脚记录。我很难将 field1 的固定长度与 NULL 值匹配 - 但是需要进行一次长度检查。
希望这能为同样苦苦挣扎的其他人解答问题。
我正在尝试将一些数据加载到 table,但是数据源有一个我想删除的页脚记录以及我想要加载的 NULL 值
我的控制文件目前有:
echo "WHEN field1 <> 'FOOTER'"
但这会丢弃空记录(所有其他记录都按预期工作)。
有没有办法包含 'or' 运算符,或者将此 运行 作为单个控制文件中的两步加载,例如步骤 1. 处理除 'FOOTER' 之外的所有记录 步骤 2 - 处理所有 NULL 记录。
你可以试试这个...
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 "("
....
然后处理 NULL 记录,然后处理非页脚记录。我很难将 field1 的固定长度与 NULL 值匹配 - 但是需要进行一次长度检查。
希望这能为同样苦苦挣扎的其他人解答问题。