Oracle loader跳过行

时间:2017-10-25 19:33:01

标签: oracle

在CSV中,使用oracle loader,如何跳过不是标题的行? 例如:

Names;Initials
SomethingForSkip
Name1;Inital1
Name2;Inital2
SomethingForSkip
Name3;Inital3
Name4;Inital4

目前我有这段代码:

CREATE TABLE t_ext_course(
UC  CHAR(100),
SCIENTIFIC_FIELD    CHAR(10),
DEPARTAMENT CHAR(100)

)
ORGANIZATION EXTERNAL
(
    TYPE oracle_loader
    DEFAULT DIRECTORY src_files
    ACCESS PARAMETERS
    (
        RECORDS DELIMITED BY newline
        BADFILE 'course.bad'
        DISCARDFILE 'course.dis'
        LOGFILE 'course.log'
        SKIP 3
        FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL
        (
            UC              CHAR(100),
            SCIENTIFIC_FIELD    CHAR(10),
            DEPARTAMENT     CHAR(100)
        )
    )
    LOCATION ('course.csv')
)
REJECT LIMIT UNLIMITED;

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用LOAD WHEN参数。您可以将其放在SKIP 3参数后面。

使用LOAD WHEN,您可以指定条件,以便仅加载满足该条件的源文件行。

SQL * Loader ,并且,通过扩展,oracle_loader类型的外部表提供了BLANKS关键字,您可以使用该关键字检查空字段。它对于您不知道字段长度的分隔数据很有用。

你可以像这样把它们放在一起:

LOAD WHEN (SCIENTIFIC_FIELD != BLANKS)