Как сделать db2 load load недопустимое значение как null вместо odlf отклонить всю запись

Я использую утилиту загрузки DB2 для загрузки файла данных в таблицу, и там есть столбец даты. В файле данных это формат yyyymmdd, а для нулевого значения это 00000000. Я указал формат даты после «изменено кем», и для записей с действительной датой он загружает perfecrty, но отклоняет все записи с 00000000 в столбце даты. Я не хочу отклонять эти записи, но чтобы загрузить их и установить значение null в столбце даты, как я могу этого добиться?

ЗАГРУЗИТЕ в VARCHAR (или INTEGER) и используйте столбец GENERATED, который является условным преобразованием DATE столбца VARCHAR (или INTEGER).

Paul Vernon 26.10.2018 09:48

или направьте свой файл через sed, или используйте INGEST, или используйте промежуточную таблицу, затем скопируйте преобразованные данные во вторую таблицу, или (при использовании Db2 Warehouse) используйте EXTERNAL TABLE, или используйте инструмент ETL

Paul Vernon 26.10.2018 09:50
0
2
361
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

LOAD не имеет возможности изменить способ представления значений NULL во входном файле. Один из вариантов - сгенерированный столбец

db2 "create table d(i int, d generated always as (case when i > 0 then DATE(TO_DATE(i,'YYYYMMDD')) END)) organize by row"
echo 00000000 > d.in
echo 20180101 >> d.in
load from d.in of del replace into d nonrecoverable
db2 "select * from d"

дает

I           D         
----------- ----------
          0 -         
   20180101 01/01/2018

  2 record(s) selected.

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