我正在尝试使用SQLite3的shell将二进制数据插入到blob中,这意味着常规的SQL语句.这是我的表:
CREATE TABLE MYTABLE
(ID INTEGER,
BINDATA BLOB NOT NULL,
SOMEFK INTEGER REFERENCES OTHERTABLE(ID) NOT NULL,
PRIMARY KEY(ID)
);
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的插入语句:
INSERT INTO MYTABLE (BINDATA, SOMEFK)
VALUES (__READBINDATA('/tmp/somefile'), 1);
Run Code Online (Sandbox Code Playgroud)
随着__READBINDATA(file)我正在寻找的功能.那可能吗?
没有内置函数或shell函数将文件读入blob.
但是,借助该hexdump工具,可以将文件内容转换为blob文字:
echo "insert into mytable(bindata, somefk) " \
"values(x'"$(hexdump -v -e '1/1 "%02x"' /tmp/somefile)"', 1);"
Run Code Online (Sandbox Code Playgroud)
然后可以将此命令通过管道传输到sqlite3shell中.