使用Sql * Loader进行条件加载

时间:2011-12-03 02:58:11

标签: sql database oracle11g substr sql-loader

使用SQL * Loader,我想要一个像这样的条件:

在以下情况下加载记录:substr(Col,3,2)='06'

      Col
    ------
   10062034
      .
      .
      .

有没有办法将WHEN与substr(或任何其他函数)结合在控制文件中?

我试过了WHEN (substr(Col,3,2)='06'),但它没有用。

2 个答案:

答案 0 :(得分:0)

您可以将When与其他功能结合使用,作为您的代码:

CASE substr(col,3,2)

WHEN '06' THEN
-- Do st
ELSE
-- Do st
END

HTH。

答案 1 :(得分:0)

不,WHEN子句的语法非常严格;见http://docs.oracle.com/cd/B14117_01/server.101/b10825/ldr_control_file.htm#i1005657。您只能基于整个字段或特定字符位置进行限制。也就是说,如果您使用的是固定格式,那么您可以将substr(Col,3,2)表示为一系列字符位置,这样就可以了。例如,如果Col从字符#20开始,那么您可以使用WHEN (22:23) = '06'。但是,如果您使用的是免费格式,例如FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"',那么您通常不会知道Col的字符偏移量。