0

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

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

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

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

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

提前致谢。

4

1 回答 1

1

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

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

帮我理解Oracle中CLOB和BLOB的区别

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

更困难的部分将是真正地穿过clob。不完全相同但给你一些想法是这个链接Reading clob line by line with pl\sql

希望能帮助到你。

于 2013-04-26T21:28:54.877 回答