如何将 sqlite 文件中的 blob 数据读取为可读格式?

Posted

技术标签:

【中文标题】如何将 sqlite 文件中的 blob 数据读取为可读格式?【英文标题】:How do I read blob data in sqlite file into readable format? 【发布时间】:2021-01-09 00:45:02 【问题描述】:

愚蠢的问题,但是如何将存储在 blob 格式的数据转换为人类可读的格式?我的数据存储在 .sqlite 文件中。在 R 中查看时,许多字段都以 blob[##, B] 格式存储(如果您知道这样的解决方案,我也可以使用 Python)

当我查询我的数据时,如果我在列周围使用 HEX 函数,我会得到如下响应...

789C55CF310EC2300C05D0AB449E3B244D1AC7CCB02171...

当我在没有 HEX 函数的情况下查询我的数据时,我得到

b"x\x9cU\xcf1\x0e\xc20\x0c\x05\xd0\xabX\x9e;\x...

我期待在我的专栏中出现“2018”或“加拿大”之类的内容,但我得到了所有这些废话。

library(RSQLite)

conn = RSQLite::dbConnect(RSQLite::SQLite(), '/Users/me/countries/database.sqlite')

dbGetQuery(conn, "select * from countries limit 10")

【问题讨论】:

这有帮助吗:How to convert a hex string to text in R? b"x\x0c... 看起来像一个 python 字符串,对吗? runningbirds,你能提供一些可重现的东西吗?例如,您知道具体应该呈现什么 that 十六进制字符串吗?拥有已知的往返数据输入/十六进制输出或 blob-out 可能很有用。 【参考方案1】:

我也面临同样的问题,并为此在 python 中找到了解决方案。我们无法解码这些值,因为这些值是压缩格式的,所以在执行解码之前,我们应该执行如下解压缩操作。

import zlib
strs = b'x\x9c\x8bV\xf2\xcd\xcfO\xa9T\xd2QPrL\xceM,R\x8a\x05\x003\xf0\x05y'
zlib.decompress(strs).decode("utf-8")

'["Moody", "Acmar"]'

【讨论】:

以上是关于如何将 sqlite 文件中的 blob 数据读取为可读格式?的主要内容,如果未能解决你的问题,请参考以下文章

Octave:从 sqlite db 文件中读取 BLOB 数据

更新 blob 后,Android sqlite 无法读取

SQLite - 如何从 XML 文件插入 JPG 图像(使用 Delphi 2009)

如何将::序列化为 sqlite::blob?

如何将图像存储为 Sqlite 中的 blob 以及如何检索它?

sqlite3_exec读取blob数据