2011-01-06 2 views
13

Я экспортировал записи в плоский файл, разделенный символом «|» и кажется, что когда я импортирую эти записи в новую базу данных, SQL Server рассматривает значения NULL как пустые поля. Запросы IMy работали правильно, когда записи/поля были NULL, поэтому я хочу либо найти способ сохранить значения NULL в данных, либо преобразовать пустые поля в значения NULL. Я предполагаю, что первая будет проще, но я не знаю, как это сделать. Любая помощь будет оценена по достоинству.Как сохранить значения NULL при использовании SSIS для импорта из плоского файла в SQL Server 2005

ответ

16

В вашем целевом соединении в потоке данных есть свойство, которое вы можете chceck, которое говорит Keep nulls, JUst проверяет это. Почему это не по умолчанию, я никогда не узнаю.

Хммм что-то странное происходит там. Я могу предположить, что вы затем очистите данные и измените их на нуль, вы можете либо сделать это как часть потока данных, либо сделать два потока данных, один из которых вставляет данные в промежуточную таблицу, а затем запускает задачу Exectue SQl для очистки а затем создать поток данных, который будет выполняться из промежуточной таблицы в реальную таблицу.

+4

+1, аминь «, почему это не по умолчанию я буду никогда не знаю " –

+0

Я проверил это поле, но, похоже, это не имеет никакого значения; поля по-прежнему отображаются как пробелы в таблице вместо NULL. Я также дважды проверял файл, и между моими разделителями «|» нет места. Даже предварительный просмотр показывает поля как пробелы. Я что-то пропустил? – ofm

18

У меня была такая же проблема. Я разрешил его, изменив свойство RetainNulls в свойствах файла Flat File в задаче потока данных.

+0

Это позволяет пустым значениям обрабатываться как NULL и экономит много работы, создавая производные столбцы для обработки этого. –

0

в случае, если кто ищет, как сделать это при создании пакета программно необходимо установить переменную в вашем CManagedComponentWrapper объекта

CManagedComponentWrapper instanceSource = ComponentSource 
... 
instanceSource.SetComponentProperty("RetainNulls", true);