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

时间:2012-07-02 11:45:59

标签: sqlite blob binaryfiles

我有这个SQLite表:

create table mytable (
aid INTEGER NOT NULL PRIMARY KEY, 
bid INTEGER NOT NULL, 
image BLOB
);

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

谢谢!

2 个答案:

答案 0 :(得分:12)

sqlite3 command line interface添加了以下两个“应用程序定义”函数:

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

答案 1 :(得分:4)

您可以使用以下语法:

echo "insert into mytable values(1,1, \"`cat image`\")" | sqlite3 yourDb

我不确定“大约blob的值。请注意cat命令的反引号,意味着cat命令将在回显之前执行。

[编辑]

Blob存储为带有“X”前缀的六位数。您可以使用“hexdump”unix命令生成hexa字符串,但最好编写一个读取图像并执行插入的命令行工具。 有关此帖子的更多详情:http://comments.gmane.org/gmane.comp.db.sqlite.general/64149