我试图使用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)
是我正在寻找的功能。这可能吗?
答案 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。