Данные Oracle не загружаются после ПОЗИЦИИ (10)

Я пытался загрузить некоторые данные из CSV-файла на основе определенных условий, и я ограничен использованием элемента управления "ИЛИ" в условии когда (Oracle ctl) данные загружаются для первых 11 условий, но не загружают данные после первое 11 условие

Ниже приведен пример кода

     create table t1 (
     c1 varchar(10),
     c2 varchar(10),
     c3 varchar(10)
     )

---------- dataloader -----------

     options(errors=20000)
     LOAD DATA
     INFILE 'D:\Scripts\abc.csv'              
     BADFILE 'D:\Scripts\abc.BAD'
     DISCARDFILE 'D:\Scripts\abc.DIS'
     DISCARDMAX 20000
     insert
     INTO TABLE t1

     when c1='James'

     FIELDS TERMINATED BY "," optionally enclosed by '"'

     Trailing NULLCOLS
     (             
     c1,

     c2,

     c3
     )

     INTO TABLE t1

     when c1='John'

     FIELDS TERMINATED BY "," optionally enclosed by '"'

     Trailing NULLCOLS
     (             
     c1 POSITION(1),

     c2,

     c3
     )

     INTO TABLE t1

     when c1='Sam'

     FIELDS TERMINATED BY "," optionally enclosed by '"'

     Trailing NULLCOLS
     (             
     c1 POSITION(2),

     c2,

     c3
     )
     .
     .
     .         
     INTO TABLE t1

     when c1='Mark'

     FIELDS TERMINATED BY "," optionally enclosed by '"'
     Trailing NULLCOLS
     (             
     c1 POSITION(12),

     c2,

     c3

     )

-------------- выполнение загрузчика данных -----

     sqlldr scott/tiger direct=true control='filepath'

1 ответ

Решение

Для выполнения каждого условия нам нужно поместить тег POSITION(1) до POSITION(9) для каждого условия. в противном случае файл ctl не читает теги и игнорирует условие

Другие вопросы по тегам