HANA: неизвестные символы в столбце базы данных типа данных BLOB - PullRequest
0 голосов
/ 26 марта 2019

Мне нужна помощь о том, как преобразовать символы неизвестного типа из поля базы данных в читаемый формат, потому что мне нужно перезаписать это значение на уровне базы данных другим допустимым значением (в точном формате, в котором приложение хранит его) для автоматизации системная копия деятельности.

У меня есть проприетарное приложение, которое также позволяет пользователям настраивать его через интерфейс. Эти данные конфигурации сохраняются в таблице, а значения свойства конфигурации хранятся в столбце типа «BLOB». Для желаемого здесь значения я предоставляю действительный URL-адрес во внешнем интерфейсе приложения (например, http://myserver:8080).. Однако то, что хранится в базе данных, не читается (некоторые квадратные символы). Я испробовал все виды функций преобразования HANA ( HEX, двоичный), простой и каскадным способом (например, сначала в двоичный файл, затем в varchar), чтобы сделать его читаемым. Кроме того, я попробовал его наоборот, чтобы значение, которое я хочу вставить, отображалось в правильном формате (преобразование в BLOL через шестнадцатеричный или двоичный код), но это тоже не работает. Я скопировал значение в буфер обмена и сравнил его со всеми видами таблиц наборов символов (хотя я не уверен, что это вообще может работать).

Мои попытки преобразования выглядят примерно так:

SELECT TO_ALPHANUM('') FROM DUMMY;

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

Как можно подойти к этому и, возможно, узнать набор символов, который используется этим приложением? Буду признателен за еще несколько идей.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

В вашем столбце BLOB есть последовательность байтов.Как вы упомянули, эти байты были написаны приложением, которое использует неизвестный набор символов.

Чтобы правильно интерпретировать эти байты, вам необходимо знать набор символов, поскольку это буквально отображение байтов в символыили символьные идентификаторы (например, кодовые точки в UTF).

Теперь HANA не имеет большого количества опций для работы с данными больших объектов, в первую очередь, и для данных больших (C) характерных манипуляций неявным образом.выполнить преобразование в строковый тип данных.

Итак, я бы порекомендовал написать пользовательское приложение, которое может считывать байты BLOB и выполнять преобразование в этом пользовательском приложении.После успешного преобразования в строку вы можете сохранить данные в новом поле NVCLOB, которое хранит их в кодировке UTF-8.

Однако вам придется знать набор символов в первую очередь.Обойти это невозможно.

0 голосов
/ 26 марта 2019

Я предполагаю, что вы находитесь на Oracle.Вы можете преобразовать BLOB в CLOB, как описано здесь.

http://www.dba -oracle.com / t_convert_blob_to_clob_script.htm

В случае вашего примера попробуйте этот запрос:

select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(<your_blob_value)) from dual;

Очевидно, что это работает только для значений ниже 32767 символов.

...