Преобразовать base64 в читаемую строку - PullRequest
1 голос
/ 06 ноября 2019

У меня есть таблица со столбцом 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?

1 Ответ

1 голос
/ 06 ноября 2019

Взгляните на функции для работы с base64, которые есть в SDU Tools (бесплатно). Они идут в / из varbinary, но могут нормально работать со строками, приведенными к / из этого. По крайней мере, код должен дать вам хорошее начало. Они находятся по адресу: http://sdutools.sqldownunder.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...