2012-10-12 187 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外殼。