获取ORACLE SQL中BLOB的图像格式

获取ORACLE SQL中BLOB的图像格式,sql,oracle,image,blob,Sql,Oracle,Image,Blob,我将图像存储为数据库中的BLOB类型,但是我想将其限制为svg类型,我知道我无法从BLOB获取图像名称或任何内容,但我假设我至少可以获取图像的格式,我想知道如何使用oracle SQL实现这一点。就oracle而言,一个blob就是一堆字节。它不知道它是图像、文档还是视频,所以它不知道任何东西可能是什么格式。理论上,您可以编写一些代码来尝试识别该文件。这有多复杂很大程度上取决于您希望识别文件的准确度 似乎是一个XML文档,其中包含许多svg元素,因此您可以执行类似于将blob转换为XMLclob

我将图像存储为数据库中的BLOB类型,但是我想将其限制为svg类型,我知道我无法从BLOB获取图像名称或任何内容,但我假设我至少可以获取图像的格式,我想知道如何使用oracle SQL实现这一点。

就oracle而言,一个
blob
就是一堆字节。它不知道它是图像、文档还是视频,所以它不知道任何东西可能是什么格式。理论上,您可以编写一些代码来尝试识别该文件。这有多复杂很大程度上取决于您希望识别文件的准确度

似乎是一个XML文档,其中包含许多
svg
元素,因此您可以执行类似于将
blob
转换为XML
clob
的操作,并在其上运行XPath表达式以查找
svg
元素。这并不能保证您是正确的——我可以创建一个包含
svg
元素的XML文档,该元素不是svg文件,但可能已经足够接近了。或者,您也可以查看文档中的XML名称空间,查看
svg
元素是否引用W3C svg文件格式URL(即xmlns:svg=)http://www.w3.org/2000/svg"

但是,实际上,如果您关心
blob
列的格式,那么在其他列中存储元数据信息通常更有意义。将数据加载到
blob
列中的任何内容几乎肯定都能够填充其他列,如
file\u name
extension
mime\u type
,以便您知道该列包含的内容。然后,您可以依赖这些元数据列,而不是试图解析文件的内容