7

SQLite3 のシェル、つまり通常の SQL ステートメントを使用してバイナリ データを 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

1 に答える 1

8

ファイルを BLOB に読み込むための組み込み関数やシェル関数はありません。

ただし、このhexdumpツールを使用すると、ファイルの内容をblob リテラルに変換できます。

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

その後、このコマンドをsqlite3シェルにパイプできます。

于 2012-10-12T21:05:49.037 に答える