Управляющий файл SQL * Loader, отображающий одно поле данных в два столбца - PullRequest
1 голос
/ 19 марта 2019

Я использую сценарий оболочки с командой sqlldr, чтобы загрузить данные из файла CSV в таблицу.

Например, файл CSV с этими данными:

dog;cat;bird;fish;

и этот управляющий файл:

OPTIONS (SKIP=1) LOAD DATA 
 INFILE *
 APPEND
 INTO TABLE animals
 FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"' 
 (
animal1, animal2, animal3, animal4)

загружается в таблицу, как и ожидалось:

ANIMAL1    ANIMAL2    ANIMAL3    ANIMAL4   
---------- ---------- ---------- ----------
dog        cat        bird       fish      

Но теперь я хотел бы загрузить данные в ту же таблицу, например

ANIMAL1    ANIMAL2    ANIMAL3    ANIMAL4   
---------- ---------- ---------- ----------
dog        fish       bird       fish      

Таким образом, вместо 'cat' я хотел бы иметь 'fish' во втором и четвертом столбцах.

Как я могу изменить свой контрольный файл для достижения этого?

1 Ответ

1 голос
/ 19 марта 2019

Вы можете ссылаться на другие поля как часть выражения SQL , поэтому в этом случае вы можете просто заменить значение поля из файла другим полем с синтаксисом типа привязки-переменной:

...
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
(
  animal1,
  animal2 ":animal4",
  animal3,
  animal4
)

После загрузки образца CSV с исходным контрольным файлом, один из которых был изменен, как указано выше, таблица содержит:

select * from animals;

ANIMAL1    ANIMAL2    ANIMAL3    ANIMAL4   
---------- ---------- ---------- ----------
dog        cat        bird       fish      
dog        fish       bird       fish      
...