【发布时间】:2014-08-08 06:37:11
【问题描述】:
我正在从 Oracle 表中提取 BLOB 列。
我得到的一些 blob 值是正确的字符串字符。
但是,某些 blob 值未正确显示字符串。这些行似乎是“压缩”。
Table Name: TableA
Column Name: ID, Type: Number
Column Name: BLOB_BINARY_VALUE, Type: BLOB
Column Name: BLOB_COMPRESSED, Type: Number
这是我使用的 SQL:
Select BLOB_BINARY_VALUE FROM TableA WHERE ID = 1234567;
我也尝试过使用:
Select TO_BLOB(BLOB_BIN_VALUE) FROM TableA WHERE ID = 1234567;
我得到的错误 Blob 值示例:(由于它的长度,我修剪了下面的值)
öp‘CÇL.aÜÌIëÉ8gbȨ!ƒ™2fÌÀÌ…mc›cÆÌ:0óÆ
:bØ>n€7iض1M9sÊТÉSДaÃ6gvôéÓ@;iÊÜY“Æ
我猜这个 BLOB 是压缩格式的。 我怎样才能解压缩这种 BLOB?
非常感谢您。
更新 1: 我也期望其他人提供的正确 Blob 查询示例:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg;}}
\viewkind4\uc1\pard\f0\fs20 MESSAGE HERE MESSAGE HERE MESSAGE HERE. \par
}
更新 2:
数据库中有另一列名为“BLOB_COMPRESSED”。具有“0”的行是显示正确值的行。具有“1”的行是显示错误值的行。所以我猜数据被压缩了。
更新 3: 我尝试遵循此链接的建议,但仍然像压缩字符串:How do I get textual contents from BLOB in Oracle SQL
Select utl_raw.cast_to_varchar2(dbms_lob.substr(BLOB_BIN_VALUE))
FROM TableA
WHERE ID = 1234567;
【问题讨论】:
-
Blob 用于二进制数据,您看到的是,不是压缩格式。你期待什么结果?看看stackoverflow.com/questions/828650/…
-
嗨,Sathya,感谢您的回复。请参阅我想要获得的示例的更新 1。在我无法访问代码的应用程序前端之一中,它确实正确显示了字符串。我们正在为该应用程序创建另一个前端,但我无法正确提取某些 blob 的值。谢谢。
-
鉴于世界上有许多压缩算法,如果您的数据实际上是压缩的,您需要告诉我们使用了什么算法,然后我们才能告诉您如何解压缩它。然而,就@Sathya 而言,我不相信数据实际上是压缩的。
-
嗨贾斯汀凯夫,感谢您的回复。请参阅我的更新 2。有一个附加列告诉它是否被压缩。不幸的是,该应用程序没有文档,也没有给出过渡,所以我必须自己弄清楚。谢谢。
-
没有人能告诉你一些未知的应用程序是如何压缩一段数据的。因此,没有人能告诉你如何解压它。您需要查看此现有应用程序的代码,或者开始通过反复试验随机尝试各种压缩算法。
标签: sql oracle oracle11g blob type-conversion