Чтобы смоделировать проблему, с которой вы столкнулись, я создал следующий пример, используя SSIS 2008 R2
с SQL Server 2008 R2
backend. Пример основан на том, что я понял из вашего вопроса. Этот пример не дает решения, но может помочь вам определить, где может быть проблема в вашем случае.
Создан простой файл CSV с двумя столбцами, а именно номер заказа и дата заказа. Как вы уже упоминали в своем вопросе, значения обоих столбцов указываются в двойных кавычках ("), а также строки заканчиваются переводом строки (\ n) с датой, являющейся последним столбцом. Приведенный ниже снимок экрана был сделан с использованием Блокнот ++ , который может отображать специальные символы в файле. LF на скриншоте обозначает перевод строки.
Создана простая таблица с именем dbo.Destination
в базе данных SQL Server для заполнения данных файла CSV с помощью пакета служб SSIS. Сценарий создания таблицы приведен ниже.
CREATE TABLE [dbo].[Destination](
[OrderNumber] [varchar](50) NULL,
[OrderDate] [date] NULL
) ON [PRIMARY]
GO
В пакете служб SSIS я создал два диспетчера соединений. SQLServer был создан с использованием подключения OLE DB для подключения к базе данных SQL Server. FlatFile - менеджер соединений с плоскими файлами.
Диспетчер соединений с плоским файлом был настроен для чтения файла CSV, и настройки показаны ниже. Красные стрелки указывают на внесенные изменения.
Предоставлено имя для диспетчера соединений с плоскими файлами. Перейдите к местоположению файла CSV и выберите путь к файлу. Введена двойная кавычка ("
) в качестве квалификатора текста. Изменен разделитель строки заголовка с {CR} {LF} на {LF}
. Это изменение разделителя строк заголовка также отражается в разделе Столбцы.
В колонку не внесено никаких изменений.
Изменено имя столбца с Столбец0 на OrderNumber
.
Изменено имя столбца с Столбец1 на OrderDate
, а также тип данных на date [DT_DATE]
Предварительный просмотр данных в диспетчере соединений с плоскими файлами выглядит хорошо.
На вкладке Control Flow
пакета служб SSIS поместите Data Flow Task
.
В Задаче потока данных помещены Flat File Source
и OLE DB Destination
.
Flat File Source
был настроен для чтения данных файла CSV с помощью диспетчера соединений FlatFile. Ниже три снимка экрана показывают, как был настроен компонент источника плоского файла.
Компонент OLE DB Destination
был настроен на прием данных из источника плоских файлов и вставку их в таблицу базы данных SQL Server с именем dbo.Destination
. Ниже три снимка экрана показывают, как был настроен компонент Назначение OLE DB.
Используя шаги, упомянутые на следующих 5 снимках экрана, я добавил средство просмотра данных в поток между источником плоских файлов и назначением OLE DB.
Перед запуском пакета я проверил исходные данные, представленные в таблице. В настоящее время он пуст, потому что я создал его, используя скрипт, предоставленный в начале этого поста.
Выполнение пакета и выполнение пакета временно приостановлено для отображения данных, передаваемых из источника плоских файлов в пункт назначения OLE DB в средстве просмотра данных. Я нажал на кнопку запуска, чтобы продолжить выполнение.
Пакет успешно выполнен.
Данные источника плоских файлов были успешно вставлены в таблицу dbo.Destination
.
Вот расположение таблицы dbo. Назначение. Как видите, поле OrderDate имеет тип данных date , и пакет все еще продолжал корректно вставлять данные.
Этот пост, хотя и не является решением.Надеюсь, поможет вам выяснить, где проблема может быть в вашем сценарии.