Подтвердить что ты не робот

SSIS не может преобразовать, поскольку потенциальная потеря данных

У меня есть пакет SSIS, который импортирует из документа Excel в таблицу базы данных. Я получаю следующие ошибки:

[Excel Source [1]] Error: There was an error with output column "ShipTo" (47) on output
"Excel Source Output" (9). The column status returned was: "The value could not be 
converted because of a potential loss of data.".

[Excel Source [1]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The
"output column "ShipTo" (47)" failed because error code 0xC0209072 occurred, and the
error row disposition on "output column "ShipTo" (47)" 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.

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method
on component "Excel Source" (1) returned error code 0xC0209029.  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.

Я прочел и нашел статьи, чтобы убедиться, что мои типы данных совпадают, и я это сделал. В документе Excel есть 184 строки, а в столбце, указанном в этих ошибках (shipto), все они имеют одинаковое значение, а это "Все". Я столкнулся с этим в последний раз, когда я его запустил, но всего 4 строки имели "все", поэтому я ввел эти значения вручную, но на этот раз это будет не очень эффективно.

В таблице адресата столбец ShipTo является Varchar (20), поэтому я не вижу, что размер является проблемой, поскольку это одна из трех вещей: 1-значное число, 2-значное число или слово All.

Есть ли у кого-нибудь дополнительные идеи, которые я мог бы попробовать? Любая помощь приветствуется. Спасибо всем, кто может предложить любую помощь.

4b9b3361

Ответ 1

Когда вы впервые настроили этот пакет, я предполагаю, что одно или двухзначное число было первым значением в столбце ShipTo. Ваше чтение пакета из Excel выбрало числовой тип для этого поля ввода, а слово "ALL" завершилось неудачно, поскольку спецификация ввода для этого поля является числовой. Есть несколько способов исправить это заранее, но, чтобы исправить это, самый простой способ - щелкнуть правой кнопкой мыши по источнику Excel и выбрать "Показать расширенный редактор". Оттуда выберите вкладку "Свойства ввода и вывода". В верхней части раздела входов и выходов этого диалогового окна найдите столбец ShipTo. Вам нужно будет развернуться, чтобы найти его. Установите для DataType значение "string [DT_STR]" и длина до 20.

Нажмите "ОК", затем снова запустите пакет.

Ответ 2

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

Решение

Для исправления этого изменения тип данных excel является одним из решений. В Excel Скопируйте данные столбца и вставьте в другой файл. Удалить этот столбец и вставить новый столбец в виде текстового типа и вставить эти скопированные данные в новый столбец.

Теперь в пакете ssis удалите и заново создайте источник Excel, а таблица назначения измените тип данных столбца как varchar.

Это будет работать.

Ответ 3

Для меня просто удалил источник OLE DB из SSIS и снова добавил. Работали!