Ошибка: сбой преобразования данных при загрузке нескольких файлов .csv в одну таблицу SQL - PullRequest
0 голосов
/ 21 апреля 2020

Определение проблемы:

Мы не можем загрузить данные из нескольких листов Excel в папке в одну таблицу базы данных SQL на сервере SQL. Я использовал контейнер forl oop для получения нескольких файлов и диспетчер соединений с несколькими плоскими файлами. Ошибка выдается в компонент источника Multi Flat файлов. Не в состоянии понять преобразование, которое оно пытается выполнить с данными, из-за которых оно не выполняется.

Код ошибки, указанный ниже:

[Flat File Source [61]] Error: Data conversion failed. The data conversion for column ""OriginalHireDate"" returned status value 2 and status text "The value could not be converted because of a potential loss of data.".

[Flat File Source [61]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "Flat File Source.Outputs[Flat File Source Output].Columns["OriginalHireDate"]" failed because error code 0xC0209084 occurred, and the error row disposition on "Flat File Source.Outputs[Flat File Source Output].Columns["OriginalHireDate"]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.

[Flat File Source [61]] Error: An error occurred while processing file "F:\CCHC\ADP\Incremental_ADP\ADP_PayData_Final1032020.csv" on data row 4209.

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on Flat File Source returned error code 0xC0202092.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.

Что за устранение неисправностей было сделано до сих пор:

Я изменил код страницы в диспетчере соединений с несколькими плоскими файлами и попытался запустить ETL, но не смог. На самом деле, если я сохраню код страницы 65001, то он загружает данные, но в строке № 4209 он объединяет столбцы, из-за чего мы получаем объединенные данные столбцов. Я также создал новый пакет для запуска ETL для данных одного файла в таблицу SQL с использованием источника плоских файлов, но даже это не удалось. Не в состоянии понять, какое преобразование оно пытается сделать с данными, из-за которых оно не выполняется. Созданный новый целевой компонент переназначает все столбцы с источником плоского файла, но выполнение все еще не выполнено. Мы попытались изменить размер для длинного ввода.

Может кто-нибудь помочь мне с этим вопросом?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 апреля 2020

Решение № 1: Проверьте типы данных:

Мы изменили типы данных целевого компонента в соответствии с типами данных источника, используя

Show Advance Редактор -> Свойства вывода ввода -> Целевой ввод OLE DB

Теперь разверните Целевой ввод OLE DB, нажав (+), проверьте типы данных в окне свойств с правой стороны и сделайте это для каждого столбца в Внешние столбцы и внутренние столбцы. В моем случае это была строка Unicode [DT_WSTR] для столбцов даты.


Решение №2: Редактор диспетчера соединений с несколькими плоскими файлами

Для получения более подробной информации см. Microsoft do c: https://docs.microsoft.com/en-us/sql/integration-services/connection-manager/multiple-flat-files-connection-manager?view=sql-server-ver15

Я использовал спецификатор текста ": укажите используемый спецификатор текста. Например, вы можете указать, чтобы заключать текст в кавычки.

Ссылка для ссылки, если у вас возникли проблемы с классификатором текста:

Избавьтесь от двойных кавычек в CSV-файле, используя текстовый классификатор в SSIS https://www.tutorialgateway.org/text-qualifier-in-ssis/

Проверьте заголовок разделитель строк:

Я использовал запятую {,}

Кодовая страница:

Я использовал 65001 UTF-8

Описание- Строки разделены запятая.


Решение №3: Кодовая страница

Для кодовой страницы необходимо выполнить две настройки:

  1. Редактор диспетчера соединений с несколькими плоскими файлами

    Я использовал 65001 UTF-8

    Описание- Ряды разделены через запятую.

  2. Свойства компонента Назначение OLE DB внутри DFT

    Щелкните правой кнопкой мыши Назначение OLE DB -> Свойства

    Установите значение True для параметра AlwaysUseDefaultCodePage .

    Теперь установите для DefaultCodePage значение 65001, аналогичное тому, которое вы использовали в редакторе диспетчера соединений с несколькими плоскими файлами.

    Также проверьте, установлено ли значение UsesDespositions.

Надеюсь, что это решение поможет всем решить свои проблемы, связанные с этой ошибкой. Удачи!

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