首页 > 解决方案 > HANA:数据类型 BLOB 的数据库列中的未知字符

问题描述

我需要有关如何将未知类型的字符从数据库字段解析为可读格式的帮助,因为我需要在数据库级别用另一个有效值(以应用程序存储它的确切格式)覆盖这个值,以自动化系统复制活动.

我有一个专有应用程序,它还允许用户通过前端对其进行配置。此配置数据存储在表中,配置属性的值存储在“BLOB”类型的列中。对于此处所需的值,我在应用程序前端提供了一个有效的 URL(如http://myserver:8080)。但是,存储在数据库中的内容是不可读的(一些方形字符)。我尝试了各种HANA(HEX,二进制)的转换函数,简单,并且以级联方式(例如首先到二进制,然后到varchar)以使其可读。另外,我尝试了另一种方法,使我要插入的值以正确的格式显示(通过十六进制或二进制转换为 BLOL),但这也不起作用。我将值复制到剪贴板并将其与各种字符集表进行比较(尽管我不确定这是否可以工作)。

我的转换尝试看起来有点像这样:

SELECT TO_ALPHANUM('') FROM DUMMY;

而括号将包含有问题的字符。我什至不能在这里打印它们。

如何解决这个问题并找出该应用程序使用的字符集?如果有更多的想法,我将不胜感激。

标签: sqlhanacharacter-set

解决方案


您在 BLOB 列中拥有的是一系列字节。正如您所提到的,这些字节是由使用未知字符集的应用程序写入的。

为了正确解释这些字节,您需要知道字符集,因为这实际上是字节到字符或字符标识符的映射(例如 UTF 中的代码点)。

现在,HANA 并没有提供很多选项来处理 LOB 数据,而对于 C(字符)LOB 数据,大多数操作都会隐式执行到字符串数据类型的转换。

因此,我建议编写一个自定义应用程序,该应用程序能够读取 BLOB 字节并在该自定义应用程序中执行转换。成功转换为字符串后,您可以将数据存储在一个新的 NVCLOB 字段中,该字段将其保存为 UTF-8 编码。

不过,您首先必须知道字符集。没办法。


推荐阅读