我正在尝试使用 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)
是我正在寻找的函数。这可能吗?
最佳答案
没有内置函数或 shell 函数可以将文件读入 blob。
但是,在 hexdump
的帮助下工具,可以将文件的内容转换为 blob literal :
echo "insert into mytable(bindata, somefk) " \
"values(x'"$(hexdump -v -e '1/1 "%02x"' /tmp/somefile)"', 1);"
然后可以将该命令通过管道传输到 sqlite3
shell。
关于sqlite - 将数据插入 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865697/