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

如何在bash中将二进制数据插入sqlite3数据库?

发布时间:2020-12-16 01:26:59 所属栏目:安全 来源:网络整理
导读:我想在bash脚本中将二进制数据(png,jpg,gif等)插入到sqlite3数据库中. 我使用独立的二进制sqlite3.我该如何编写SQL语句? 谢谢你的帮助. 这是一种方法.文件test.jpg被嵌入到sqlite的二进制文字格式之后插入到数据库foodb的表foo中: [someone@somewhere tmp]
我想在bash脚本中将二进制数据(png,jpg,gif等)插入到sqlite3数据库中.
我使用独立的二进制sqlite3.我该如何编写SQL语句?
谢谢你的帮助.
这是一种方法.文件test.jpg被嵌入到sqlite的二进制文字格式之后插入到数据库foodb的表foo中:
[someone@somewhere tmp]$sqlite3 foodb "create table foo (bar blob);"
[someone@somewhere tmp]$echo "insert into foo values (X'`hexdump -ve '1/1 "%.2x"' test.jpg`');" | sqlite3 foodb

编辑

在这里我们看到数据以“全保真”存储,因为.jpg文件可以恢复:

[somneone@somewhere tmp]$sqlite3 foodb "select quote(bar) from foo;" | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' > bla.jpg 
[somneone@somewhere tmp]$ll *.jpg
-rw-rw-r-- 1 someone someone 618441 Apr 28 16:59 bla.jpg
-rw-rw-r-- 1 someone someone 618441 Apr 28 16:37 test.jpg
[someone@somewhere tmp]$md5sum *.jpg 
3237a2b76050f2780c592455b3414813  bla.jpg
3237a2b76050f2780c592455b3414813  test.jpg

此外,这种方法节省空间,因为它使用sqlite的BLOB类型存储.jpg.它不使用例如base64编码对图像进行字符串化.

[someone@somewhere tmp]$ll foodb 
-rw-r--r-- 1 someone someone 622592 Apr 28 16:37 foodb

(编辑:李大同)

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

    推荐文章
      热点阅读