ОШИБКА: слишком длинное значение для типового символа (50)

Я создал внешнюю таблицу в HDFS и внутреннюю таблицу в HAWQ. Я извлекаю данные из SQL Server, используя talend для процесса etl. Поток процесса похож на SQLSERVER -> ВНЕШНЯЯ ТАБЛИЦА (PXF HAWQ) -> ВНУТРЕННЯЯ ТАБЛИЦА (HAWQ)

При выполнении задания я получаю сообщение об ошибке ниже

ERROR: value too long for type character(50) (seg0 slice1 phds01.aa.com:40000 pid=297176) Detail: External table podetails_stg0, line 17 of pxf://PHD-HA/test/PoDetails_stg0.csv?profile=HdfsTextSimple, column StockDes

Как мне решить эту ошибку?


person vkumar    schedule 16.03.2017    source источник


Ответы (2)


Строка, которую вы пытаетесь поместить в HDFS, имеет более 50 символов. У вас есть два варианта:

  • Сократите столбец на 50-м символе с помощью StringHandling.LEFT(yourcolumn,50)

  • Измените таблицу и сделайте столбец больше, например, символ (100) или даже больше.

person Théo Capdet    schedule 16.03.2017
comment
Спасибо, я проверил размер строки не более 30 для любых записей для столбца StockDes, но все равно получаю ошибку - person vkumar; 17.03.2017

В основном это ошибка, связанная с данными. Данные содержат много специальных символов, таких как новая строка, запятая. Это приводит к перемещению данных в другой столбец при копировании данных в CSV в HDFS из mssqlserver. Лучший способ устранить эту проблему — отфильтровать специальные символы на уровне источника при выборке данных.

person vkumar    schedule 29.07.2017