Создать файл .csv через контрольный файл - PullRequest
1 голос
/ 18 октября 2019

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

LOAD DATA
INFILE '$ROOT_FOLDER/xxx/xxx/xxx/example.csv' "str '\n'"
discardfile '$ROOT_FOLDER/xxx/xxx/xxx/example.dsc'
Append

INTO TABLE TABLE1
when (9) = ','
FIELDS TERMINATED BY ','
(
  Field1                       CHAR  "to_date(:Field1,'YYYYMMDD')"
  ,Field2                      CHAR
  ,Field3                      FILLER char
  ,Field4                      FILLER char
  ,Field5                      CHAR
)

Когда я запускаю код, создаются три файла CSV, два правильных и последний нет.

Это пример одного правильного CSV:

INT_PROCESS,18.10.2019 05:35:02,18.10.2019 05:35:02,9
Date,Instrument ID,Instrument ID Type,Exchange Code,Close
20191017,XXXX=,F1,F2, -.49900
,GBP3MFSR=,F1,F2,
20191017,AAAA=,F1,F2,2.00000
20191016,BBBB=,F1,F2,1.90000
20191017,CCCC=,F1,F2, -.44800
20191017,DDDD=,F1,F2, -.41000
20191016,EEEE=,F1,F2,.71090
,FFFF=,F1,F2,
,GGGG=,F1,F2,

и вот что у меня не так:

Date,Instrument ID,Instrument ID Type,Exchange Code,Close
20191016,XXXX=,F1,F3, -.551
20191016,YYYY=,F1,F2, -.466

Как я могу исправить свой код таким образом, чтобы у меня было три CSV с одинаковой структурой?

1 Ответ

0 голосов
/ 18 октября 2019

В идеале вам не нужны никакие файлы, кроме файла .log. Подробности об ошибках смотрите в файле .log, но sqlldr пытается загрузить данные из предложения INFILE в указанную таблицу. В результате вы получите файл .log, файл .bad для записей, вызвавших ошибки, и файл сброса, содержащий записи, которые не соответствуют критериям вашего условия. Ваша цель должна состоять в том, чтобы загрузить без создания файла .bad или .dsc.

Также я думаю, что ваша запись Field1 неверна, поскольку вы обычно не вставляете тип данных DATE в столбец CHAR.

Возможно, вам придется немного почитать, прежде чем продолжить: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/oracle-sql-loader-control-file-contents.html#GUID-34A050B6-3FD7-4B77-97D2-04C03D359D16

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...