2012-10-12 61 views
4

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

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)是我期待的功能。那可能吗?

回答

4

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

然而,随着hexdump工具的帮助下,有可能改变一个文件的内容为blob literal

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

这个命令就可以通过管道输送到sqlite3外壳。