这是一种方法.文件test.jpg被嵌入到sqlite的二进制文字格式之后插入到数据库foodb的表foo中:
原文链接:https://www.f2er.com/bash/384149.html[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