Ошибка фабрики данных Azure - строковые или двоичные данные будут усечены.

Я создаю свой первый конвейер фабрики данных, очень простой. У меня есть поток данных с только источником (плоский файл csv) и приемником (таблица синапсов).

В источнике 12 столбцов. Итак, я создал таблицу в Synapse (через SSMS) со всеми 12 столбцами как varchar. Ключей нет. Просто базовая таблица. Когда я создаю действие потока данных, предварительный просмотр данных как в источнике, так и в целевом выглядит идеально. Но когда я пытаюсь запустить (отладить) конвейер, он просто не работает с ошибкой ниже:

Operation on target load_sales_data failed: {"StatusCode":"DFExecutorUserError",
"Message":"at Sink 'Sales': java.sql.BatchUpdateException: 
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]String or binary data would be truncated.
 ","Details":"at Sink 'Sales': java.sql.BatchUpdateException: 
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]String or binary data would be truncated. "}

Я просто не понимаю. Я потратил много времени, пытаясь понять, что не так, но просто не понимаю. Кто-нибудь может сказать мне, что я делаю не так?


person LearneR    schedule 11.06.2020    source источник


Ответы (1)


У вас слишком короткая длина столбца для размещения данных в столбце csv в таблице базы данных. Убедитесь, что вы указали подходящую длину полей для столбцов varchar. Обратите внимание, что по умолчанию длина составляет один символ. В документе для типа данных varchar для varchar(n) говорится, что:

Если n не указано в определении данных или в операторе объявления переменной, длина по умолчанию равна 1.

Если вы указали длину, дважды проверьте, что данные в CSV не содержат слишком длинных значений.

Несоответствие в разделителе полей может привести к тому, что ADF будет рассматривать всю строку как значение для первого поля, и это будет длиннее, чем вы ожидаете. Проверьте настройку разделителя полей для источника csv. Вы можете предварительно просмотреть данные таблицы на портале Azure в ADF, чтобы убедиться, что структура CSV отображается правильно.

Дополнительная информация в документах Microsoft по адресу https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql

person Veikko    schedule 12.06.2020
comment
Спасибо за Вейкко. Я не знал, что ограничение на количество символов по умолчанию равно 1. Я дал более длинный предел символов для всего столбца, и тогда это сработало. Спасибо. - person LearneR; 12.06.2020