我有一个sqlite3数据库。一列有TEXT类型,并且包含我要保存为文件的blob。那些是gzip压缩文件。
命令sqlite3 db.sqlite3“.dump”的输出是:
INSERT INTO“data”VALUES(1,’objects’,’object0.gz’,X’1F8B080000000000000 [..几千个十六进制字符] F3F5EF’)
sqlite3不能直接输出二进制数据,所以您必须将数据转换为hexdump,使用cut从blob文字中提取十六进制数字,并使用xxd(部分vim包)将hexdump转换为二进制:
原文链接:https://www.f2er.com/sqlite/197953.htmlsqlite3 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"