У меня есть таблица со столбцом nvarchar в SQL Server 2016, которую я хочу сохранить в кусте. Столбец nvarchar может содержать символы не ASCII. Данные с сервера SQL извлекаются в файл со столбцом nvarchar, преобразованным в кодированную строку base64. Я попробовал следующее, чтобы преобразовать base64 обратно в читаемую строку:
select decode(unbase64(BASE64STR),'UTF-8');
Не удалось со следующей ошибкой:
org.apache.hive.service.cli.HiveSQLException:Ошибка при компиляции оператора: СБОЙ: SemanticException [Ошибка 10014]: Строка 1: 7 Неправильные аргументы '' UTF-8 '': org.apache.hadoop.hive.ql.metadata.HiveException: java.nio.charset.MalformedInputException: Inputдлина = 1
Следующий код способен правильно декодировать кодированную строку BASE64
select decode(unbase64(BASE64STR),'UTF-16LE');
Безопасно ли использовать UTF-16LE для декодирования строки из столбца типа nvarchar? Будет ли это работать с любыми данными, хранящимися в столбце? Есть ли другой способ достичь этой функциональности ETL от SQL Server до Hive для данных типа nvarchar?