sqlite - 将数据插入blob

时间:2012-10-12 19:19:30

标签: sql shell sqlite

我试图使用SQLite3的shell将二进制数据插入到blob中,这意味着常规的SQL语句。这是我的表:

CREATE TABLE MYTABLE
    (ID INTEGER,
     BINDATA BLOB NOT NULL,
     SOMEFK INTEGER REFERENCES OTHERTABLE(ID) NOT NULL,
     PRIMARY KEY(ID)
);

这就是我尝试的插入语句:

INSERT INTO MYTABLE (BINDATA, SOMEFK)
VALUES (__READBINDATA('/tmp/somefile'), 1);

__READBINDATA(file)是我正在寻找的功能。这可能吗?

1 个答案:

答案 0 :(得分:6)

没有内置函数或shell函数将文件读入blob。

但是,在hexdump工具的帮助下,可以将文件内容转换为blob literal

echo "insert into mytable(bindata, somefk) " \
     "values(x'"$(hexdump -v -e '1/1 "%02x"' /tmp/somefile)"', 1);"

然后可以将此命令传送到sqlite3 shell。