Преобразование кодировки из строки в окно-1252 в abinitio
У меня ниже строка ввода из источника, и я использую базу данных mssql для загрузки данных в таблицу, но я получаю ниже ошибку из таблиц:
Error from Component 'LOADP51file.Output_Table_1__table_.load', Partition 0 [U103,DB00156,DB16000,DB00250] ABINITIO(DB00156): Put row failed for db statement ABINITIO(DB16000): ODBC Error ABINITIO(DB16000): SQLCODE: 0 ABINITIO(DB16000): SQLSTATE: 22001 ABINITIO(DB16000): MESSAGE: [Microsoft][ODBC Driver 11 for SQL Server]String data, right truncation ABINITIO(DB00250): Rejected record value: ABINITIO(DB00250): [record id "140426924" check_valt "0" description "IT IND UTP 33 £1 3D Multi ST" style_code "000000"
Я заметил, что вышеупомянутая ошибка возникает только из-за столбца "описание". Это из-за 1 фунта из источника?
Input data 140426924|0|IT IND UTP 33 £1 3D Multi ST|000000
Input dml: string(9) id; string(1) check_valt ; string(30) description ; string(6) style_code ;
Output table DML: record string("\x01",charset="windows-1252", maximum_length=9) id
/*VARCHAR(9) NOT NULL*/; string("\x01",charset="windows-1252", maximum_length=1) check_valt = NULL("") /*CHAR(1)*/; string("\x01",charset="windows-1252", maximum_length=30) description = NULL("") /*VARCHAR(30)*/; string("\x01",charset="windows-1252", maximum_length=6) style_code = NULL("") /*VARCHAR(6)*/; end;
3 ответа
Попробуй это:
out.description :: string_convert_explicit(in.description,"windows-1252","");
Кроме того, если усечение является проблемой:
out.description :: string_substring(string_convert_explicit(in.description,"windows-1252",""),1,30);
Пожалуйста, попробуйте сохранить набор символов как utf8.
Дайте нам знать, если это работает.
Спасибо Ариджит
Попробуйте использовать компонент "Переопределить формат" перед компонентом таблицы вывода и преобразовать его в "window-1252". До этого выполняйте все операции в ASCII или UTF-8.