Как использовать несколько условий в загрузчике SQL?

У меня есть один CSV-файл с нижеуказанным форматом. Первый столбец - идентификатор, второй столбец - имя, а третий - отдел В этом файле более 700 тыс. Строк. Я пытался переместить только детали отделов 10, 90, 30 и 70 в таблицу оракулов с помощью SQL Loader.

100, ААА, 10
101, В,10
102,CCC,20
103,DDD,30
104,EEE,40
105,FFF,50
106, ОГШ,70
107,HHH,60
108,III,20
109,JJJ,80
110, ККК,90
111,LLL,90
112, МММ,50
113,NNN,80
114, ООО, 10

Формат моей таблицы:-

создать таблицу DEPT_LOADER(ИДЕНТИФИКАЦИОННЫЙ НОМЕР, ИМЯ VARCHAR2(100), Номер депо);

а ниже находится контрольный файл

    загрузить данные
    infile 'F:\SQL_Loader\dept.csv'
    плохой файл 'F:\SQL_Loader\dept.bad'
    discardfile 'F:\SQL_Loader\dept.dsc'
    вставить 
    в таблицу DEPT_LOADER
    когда dept = '10' или dept = '90' или dept = '30' или dept = '70'
    поля заканчиваются на ','
    (Номер, имя, отдел)

но оракул не разрешил оператор "или" в предложении когда. Я попытался с "в" предложении и получить тот же тип ошибки.

    SQL * Loader-350: синтаксическая ошибка в строке 7.
    Ожидается "(", найдено "или".
    когда dept = '10' или dept = '90' или dept = '30' или dept = '70'

Пожалуйста, помогите мне в этом. Как я могу использовать более одного условия в контрольном файле

1 ответ

Решение

SQL*Loader не позволяет OR оператор в WHEN статьи. Вы должны использовать несколько 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
)
Другие вопросы по тегам