如何将存储在Oracle CLOB列中的十六进制编码的JPEG转换回JPEG?

时间:2013-04-26 16:09:38

标签: oracle plsql jpeg blob clob

我正在将图像从Informix数据库迁移到Oracle数据库。我从源代码收到的唯一输出是我加载到Oracle数据库中的单个文件。图像的十六进制表示如下所示:http://pastebin.com/vVBZ7qFG

如果我使用相同的十六进制并使用http://i-tools.org/bin2hex转换它我可以输出JPEG图像,这是我试图模仿的行为。

我需要遍历新表中的每条记录,并将图像作为JPEG文件输出到我的文件系统中,以便在别处使用。

有人可以帮助在Oracle 11gR2数据库上使用PLSQL复制此行为吗?

十六进制应该存储在CLOB还是BLOB列中?

提前致谢。

1 个答案:

答案 0 :(得分:1)

假设您处理十六进制的全部原因是因为您从informix获得了一个平面文件的数据库转储。因此,当您插入表中或首先将其存储在clob列中然后编写一个pl / sql函数将clob转换为blob并将函数结果存储到blob中时,将其转换回二进制并将其存储到blob中blob列,然后删除clob列。

所以问题是“十六进制应该存储在clob还是blob中?”如果您需要存储十六进制,则存储ad interim,然后将其存储在clob列中。以下链接使clob和blob之间的区别更加清晰。在我看来,所提到的编码困难与您无关。

Help me understand the difference between CLOBs and BLOBs in Oracle

关于转换本身,从十六进制中的2个字符转换为十进制并不是那么困难(我认为)但我在搜索时发现了这个hex2dec例程http://psoug.org/snippet/Convert-Hex-to-Decimal-Decimal-to-Hex_78.htm

更难实现的是实际穿过clob。不完全相同但是给你一些想法是这个链接Reading clob line by line with pl\sql

希望它有所帮助。