db2 import csv с нулевой датой - PullRequest
0 голосов
/ 05 марта 2012

Я управляю этим

 db2 "IMPORT FROM C:\my.csv OF DEL MODIFIED BY COLDEL, LOBSINFILE DATEFORMAT=\"D/MM/YYYY\" SKIPCOUNT 1 REPLACE INTO scratch.table_name"

Однако в некоторых моих строках есть пустое поле даты, поэтому я получаю эту ошибку

SQL3191N, начинающийся с "" "", не соответствует указанному пользователем DATEFORMAT, TIMEFORMAT или TIMESTAMPFORMAT. Строка будет отклонена.

Мой CSV-файл выглядит так

"XX","25/10/1985"
"YY",""
"ZZ","25/10/1985"

Я понимаю, что если вместо пустой строки вставить символ charater, я мог бы использовать параметр NULL INDICATORS . Однако у меня нет доступа для изменения файла CSV. Есть ли способ игнорировать импорт пустой строки как нулевой?

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Это ошибка в вашем входном файле. DB2 различает NULL и строку нулевой длины. Если вам нужны даты NULL, NULL вообще не будет иметь кавычек, например:

"AA",

Если вы не можете изменить формат входного файла, у вас есть 2 варианта:

  • Вставьте свои данные в промежуточную таблицу (изменив столбец DATE на символ), а затем используйте SQL для заполнения таблицы конечной цели

  • Напишите программу для анализа («исправления») входного файла, а затем импортируйте полученные фиксированные данные. Часто это можно сделать, не записывая весь файл на диск - ваша программа может записывать в именованный канал, а утилита DB2 IMPORT (и LOAD) способна читать из именованных каналов.

1 голос
/ 05 марта 2012

Я ничего не знаю.Да, в идеале это поле даты должно быть пустым.

Вероятно, лучше всего было бы загрузить данные в таблицу с нуля / темп, где этот не столбец даты - просто оставьтеэто как символьные данные (похоже, вы все равно уже используете скретч-таблицу).После этого должно быть тривиально использовать оператор CASE для преобразования информации в нулевую дату, если значение пустое, при выполнении INSERT в реальной таблице.

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