SQLite:从命令行插入二进制数据

Mob*_*ion 6 sqlite blob binaryfiles

我有这个SQLite表:

create table mytable (
aid INTEGER NOT NULL PRIMARY KEY, 
bid INTEGER NOT NULL, 
image BLOB
);
Run Code Online (Sandbox Code Playgroud)

我想image在此表的字段中插入二进制文件.是否可以sqlite3从命令行界面执行此操作?如果是这样,怎么样?我正在使用Ubuntu.

谢谢!

tzo*_*zot 13

sqlite3 命令行界面添加了以下两个"应用程序定义"函数:

  • readfile
    通常用作: INSERT INTO table(blob) VALUES (readfile('myimage.jpg'))
  • writefile
    它使用数据库blob的内容写入文件并返回写入的字节.

  • 这适用于大于或等于`SQLite Release 3.8.6 On 2014-08-15`的版本 (4认同)

Arc*_*ien 2

您可以使用如下语法:

echo "insert into mytable values(1,1, \"`cat image`\")" | sqlite3 yourDb
Run Code Online (Sandbox Code Playgroud)

我不确定 blob 周围的 " 值。请注意 cat 命令周围的反引号,意味着 cat 命令将在 echo 之前执行。

[编辑]

Blob 存储为带有“X”前缀的十六进制数字。您可以使用“hexdump”unix 命令来生成十六进制字符串,但最好编写一个读取图像并执行插入的命令行工具。有关这篇文章的更多详细信息:http://comments.gmane.org/gmane.comp.db.sqlite.general/64149