Текст был усечен или один или несколько символов не совпадали в целевой кодовой странице ole db source с назначением плоского файла - PullRequest
0 голосов
/ 14 мая 2018

Я экспортирую вывод таблицы в файл CSV.Я делаю это с помощью пакета служб SSIS, который имеет источник OLE DB и назначение плоских файлов.Я получаю следующие ошибки:

[Назначение плоского файла [2]] Ошибка: преобразование данных не выполнено.Преобразование данных для столбца «Адрес» вернуло значение состояния 4 и текст состояния «Текст был усечен или один или несколько символов не соответствовали целевой кодовой странице.».

[Flat File Destination [2]] Ошибка: Невозможно скопировать или преобразовать данные плоского файла для столбца «Адрес».

[SSIS.Pipeline] Ошибка: Код ошибки SSIS DTS_E_PROCESSINPUTFAILED.Метод ProcessInput для компонента «Назначение плоского файла» (2) завершился ошибкой с кодом ошибки 0xC02020A0 при обработке ввода «Вход назначения плоского файла» (6).Указанный компонент возвратил ошибку из метода ProcessInput.Ошибка относится только к компоненту, но является фатальной и приводит к остановке выполнения задачи «Поток данных».Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое.

[Источник OLE DB [9]] Ошибка: Попытка добавить строку в буфер задачи потока данных завершилась с кодом ошибки 0xC0047020.

[SSIS.Pipeline] Ошибка: код ошибки SSIS DTS_E_PRIMEOUTPUTFAILED.Метод PrimeOutput в источнике OLE DB возвратил код ошибки 0xC02020C4.Компонент возвратил код ошибки, когда механизм конвейера вызвал PrimeOutput ().Значение кода ошибки определяется компонентом, но ошибка является фатальной, и конвейер перестал выполняться.Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое.

Может кто-нибудь посоветовать?

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

@ user7396598

Спасибо, что указали мне в правильном направлении.Поэтому я провел сравнение, и записи, похоже, вставляются в одном и том же порядке только до точки, после которой они не совпадают.Я мог бы захватить плохие данные.выполнив следующее: выберите * из таблицы, где address! = cast (address as varchar (1000)), когда я удалил неверные данные, с которыми работал мой SSIS.

Теперь мне нужно выяснить, как преобразоватьплохие данные в приемлемом формате для CSV.

Ссылка - https://stackoverflow.com/a/2683496/8452633

0 голосов
/ 11 апреля 2019

Так что у меня была похожая проблема плохих данных в одном из моих столбцов, вызывающая эту ошибку даже после увеличения размера выходного столбца.В моем случае я решил эту проблему, заменив неверные данные в моих столбцах с помощью функции replace.

Я экспортировал данные, написав запрос, и в этом запросе вместо «select *» я написал все имена столбцов и использовал функцию replace для столбцов, которые вызывали проблемы.Я заменил все символы, которые потенциально могут привести к усечению, например запятую, трубу, табуляцию и т. Д., На пустое место

0 голосов
/ 15 мая 2018

Выходной столбец для адреса указан как меньший, чем исходный столбец таблицы.

См. Это SO: Ошибка преобразования данных служб SSIS

Резюме:

(1) Щелкните правой кнопкой мыши на источнике плоских файлов и выберите «Показать расширенный редактор». Перейдите на вкладку «Свойства ввода и вывода» Разверните «Вывод источника плоских файлов» и выберите «Внешние столбцы»

(2) Выберите столбец «Адрес» и в правой части увеличьте длину до размера, аналогичного столбцу в исходной таблице

Дважды проверьте в любом месте вашего мастера экспорта, который позволяет вам устанавливать размеры столбцов. Убедитесь, что файлы выходного файла совпадают с исходными столбцами таблицы.

...