Сохранять значения NULL в числовых столбцах с помощью мастера импорта / экспорта служб SSIS? - PullRequest
8 голосов
/ 24 февраля 2010

У меня проблема с загрузкой данных из плоских файлов с разделителями табуляции (файлов TSV) в SQL Server 2005 с помощью мастера импорта данных служб SSIS. У меня не было этой проблемы при использовании эквивалентной процедуры в SQL Server 2000, и я проверил, что внутренняя структура файлов, которые я пытаюсь импортировать, не изменилась задолго до того, как произошло обновление SQL Server.

Проблема заключается в том, что все пустые значения в столбцах с числовыми типами данных (например, smallint, float и т. Д.) При импорте преобразуются в 0, а не в NULL. Это означает, что AVGing для этих данных дает ошибочный вывод.

Файлы TSV не включают текстовые квалификаторы, однако тестирование использования квалификаторов с некоторыми фиктивными данными не привело к решению этой проблемы.

Можно сохранить значения NULL путем импорта в столбцы VARCHAR, однако это далеко от идеала. Есть ли способ указать мастеру импорта / экспорта служб SSIS импортировать пустые значения из плоских файлов в столбцы с числовыми типами данных как NULL, а не 0?

Ответы [ 2 ]

4 голосов
/ 24 февраля 2010

Смотрите мой ответ здесь пожалуйста

Мастер не предоставляет нужную вам настройку ...

2 голосов
/ 25 февраля 2010

@ gbn: Спасибо за указатель. Я считаю, что теперь нашел способ обойти эту проблему и смог успешно импортировать в свою базу данных SQL Server 2005 данные, содержащие значения NULL в числовых столбцах.


В случае, если у кого-то еще возникла такая же проблема:

Я импортировал данные с помощью задачи «Поток данных» в среде Business Intelligence Development Studio (а не с помощью dtswizard , как ранее), создав задачу «Поток данных» из источника плоских файлов в место назначения OLE DB.

В окне редактора источника плоских файлов есть флажок «сохранять нулевые значения из источника в виде нулевых значений в потоке данных». Отметьте это, чтобы решить эту проблему.

Как отметил @gbn, в мастере отсутствует это поле.

...