如何在 sql loader 中使用多个条件?

How to use multiple conditions in sql loader?

我有一个 csv 文件,下面 format.First 列是 id,第二列是名称,第三列是部门。此文件中有超过 700k 行。我试图通过使用 SQL Loader 在 oracle table 中仅移动部门 10、90、30 和 70 的详细信息。

100,AAA,10
101,BBB,10
102,CCC,20
103,DDD,30
104,EEE,40
105,FFF,50
106,GGG,70
107,HHH,60
108,III,20
109,JJJ,80
110,KKK,90
111,LLL,90
112,MMM,50
113,NNN,80
114,OOO,10

我的table格式是:-

create table DEPT_LOADER(
    ID NUMBER
    ,NAME VARCHAR2(100)
    ,DEPT number
);

以下是控制文件

    load data
    infile 'F:\SQL_Loader\dept.csv'
    badfile 'F:\SQL_Loader\dept.bad'
    discardfile 'F:\SQL_Loader\dept.dsc'
    insert 
    into table DEPT_LOADER
    when dept = '10' or  dept = '90' or dept = '30' or  dept = '70'
    fields terminated by ','
    (id,name,dept)

但是 oracle 不允许在 when 子句中使用 "or" 运算符。我尝试使用 "in" 子句并得到相同类型的错误。

    SQL*Loader-350: Syntax error at line 7.
    Expecting "(", found "or".
    when dept = '10' or  dept = '90' or dept = '30' or  dept = '70'

请帮助我。我如何在控制文件中使用多个条件

SQL*加载程序不允许在 WHEN 子句中使用 OR 运算符。您应该使用多个 INSERT INTO DEPT_LOADER .

你的控制文件应该是这样的;

LOAD DATA
INFILE 'F:\SQL_Loader\dept.csv'
BADFILE 'F:\SQL_Loader\dept.bad'
DISCARDFILE 'F:\SQL_Loader\dept.dsc'
INSERT 
INTO TABLE DEPT_LOADER WHEN DEPT = '10'
FIELDS TERMINATED BY ','
(
ID POSITION(1),
NAME,
DEPT
)
INTO TABLE DEPT_LOADER WHEN DEPT = '90'
FIELDS TERMINATED BY ','
(
ID POSITION(1),
NAME,
DEPT
)
INTO TABLE DEPT_LOADER WHEN DEPT = '30'
FIELDS TERMINATED BY ','
(
ID POSITION(1),
NAME,
DEPT
)
INTO TABLE DEPT_LOADER WHEN DEPT = '70'
FIELDS TERMINATED BY ','
(
ID POSITION(1),
NAME,
DEPT
)