如何在 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
)
我有一个 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
)