11

我有这个 SQLite 表:

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

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

谢谢!

4

2 回答 2

22

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

  • readfile
    通常用作:INSERT INTO table(blob) VALUES (readfile('myimage.jpg'))
  • writefile
    它使用数据库 blob 的内容写入文件并返回写入的字节数。
于 2016-03-12T17:21:30.293 回答
4

您可以使用如下语法:

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

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

[编辑]

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

于 2012-07-02T11:56:12.070 回答