【问题标题】:SQLite: insert binary data from command lineSQLite:从命令行插入二进制数据
【发布时间】:2012-07-02 19:52:24
【问题描述】:

我有这个 SQLite 表:

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

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

谢谢!

【问题讨论】:

    标签: sqlite blob binaryfiles


    【解决方案1】:

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

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

    【讨论】:

    • 这适用于大于或等于SQLite Release 3.8.6 On 2014-08-15的版本
    【解决方案2】:

    您可以使用如下语法:

    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

    【讨论】:

    • 感谢您的回答。不幸的是,这仅适用于非二进制文件。例如,我可以插入文本,但不能插入 jpg 图像,也不能插入其他类型的二进制数据。你知道为什么吗?
    • 也许您需要在插入二进制文件之前对其进行编码,例如 uuencode? “cat”命令可能会为 db insert 产生不可用的输出
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2019-04-26
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多