sqlldr导入时,如果某字段是空值,这行就导入,如果是非空,该行就不导入,请教一下大家应该怎么写when子句load data
infile 'ACCOUNT_VPMN_9920090202080142.4'
Append into table tmp_DR_VPMN_QZ
WHEN (TRADEMARK = 'NULL')
fields terminated by  ';'
TRAILING NULLCOLS
(
TRADEMARK                      , 
SERVICE_ID                     ,
DR_TYPE                        ,
我是这么写的,错误
记录 1: 被废弃 - 所有 WHEN 子句出现错误。
记录 2: 被废弃 - 所有 WHEN 子句出现错误。
就是所有这个字段为空的记录都没导入进去,请教大家该怎么写

解决方案 »

  1.   

    is null 不行,提示语法错误
      

  2.   

    还是出错:SQL*Loader: Release 9.2.0.1.0 - Production on 星期二 3月 24 13:46:15 2009Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.SQL*Loader-350:  语法错误位于第4行。
    预期值是加引号的字符串或hex(十六进制) 标识符,而实际值是"NULL"。
    WHEN ( TRADEMARK = NULL)
                       ^
      

  3.   

    up up 
    哪位老大可以给我解惑?
      

  4.   


    我没用过 不过看这个提示 我觉得你试试 TRADEMARK = "NULL"
      

  5.   

    TRADEMARK = "NULL"  也不行我要load的记录如下
    TRADEMARK SERVICE_ID DR_TYPE
    1         50006      200
              50006      201 sqlldr结果:
    记录 1: 被废弃 - 所有 WHEN 子句出现错误。
    记录 2: 被废弃 - 所有 WHEN 子句出现错误。
      

  6.   

    sqlldr用nullif倒是能判断某列值为空时不导入,现在是为空时要导入,可能不能实现。换个方式,可以在数据库中建张表,然后把所有数据都导入该表中,然后再用SQL把满足你条件的数据insert into到目标表中。
      

  7.   


    赞成这种方法,不推荐用WHEN这样会降低导出的效率,如果表很大的话,是很不理想的!
      

  8.   

    如果你一定想要用的话,我有个想法,你可以尝试一下;load data 
    infile 'ACCOUNT_VPMN_9920090202080142.4' 
    Append into table tmp_DR_VPMN_QZ 
    WHEN nvl(TRADEMARK,'XXXXXXXXX') = 'XXXXXXXXX'   --这里的思路就是用一个特殊字符串来实现为空的条件为真,只要这个字符串不会出现在你的记录中
    fields terminated by  ';' 
    TRAILING NULLCOLS 

    TRADEMARK                      , 
    SERVICE_ID                    , 
    DR_TYPE                        ,