加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将存储在sqlite数据库中的文件转储为blob?

发布时间:2020-12-12 19:14:32 所属栏目:百科 来源:网络整理
导读:我有一个sqlite3数据库。一列有TEXT类型,并且包含我要保存为文件的blob。那些是gzip压缩文件。 命令sqlite3 db.sqlite3“.dump”的输出是: INSERT INTO“data”VALUES(1,’objects’,’object0.gz’,X’1F8B080000000000000 [..几千个十六进制字符] F3F
我有一个sqlite3数据库。一列有TEXT类型,并且包含我要保存为文件的blob。那些是gzip压缩文件。

命令sqlite3 db.sqlite3“.dump”的输出是:

INSERT INTO“data”VALUES(1,’objects’,’object0.gz’,X’1F8B080000000000000 [..几千个十六进制字符] F3F5EF’)

如何使用命令行将sqlite文件中的二进制数据提取到文件?

sqlite3不能直接输出二进制数据,所以您必须将数据转换为hexdump,使用cut从blob文字中提取十六进制数字,并使用xxd(部分vim包)将hexdump转换为二进制:
sqlite3 my.db "SELECT quote(MyBlob) FROM MyTable WHERE id = 1;"  
| cut -d' -f2                                                   
| xxd -r -p                                                      
> object0.gz

使用SQLite 3.8.6或更高版本,命令行shell包括实现writefile function的fileio扩展:

sqlite3 my.db "SELECT writefile('object0.gz',MyBlob) FROM MyTable WHERE id = 1"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读