11

私はこのSQLiteテーブルを持っています:

create table mytable (
aid INTEGER NOT NULL PRIMARY KEY, 
bid INTEGER NOT NULL, 
image BLOB
);

imageそして、このテーブルのフィールドにバイナリファイルを挿入したいと思います。sqlite3コマンドラインインターフェイスからそれを行うことは可能ですか?もしそうなら、どのように?私はUbuntuを使用しています。

ありがとうございました!

4

2 に答える 2

22

sqlite3コマンド ライン インターフェイスは、次の 2 つの「アプリケーション定義」関数を追加します。

  • readfile
    これは通常、次のように使用されます。INSERT INTO table(blob) VALUES (readfile('myimage.jpg'))
  • writefile
    これは、データベース blob の内容を含むファイルを書き込み、書き込まれたバイト数を返します。
于 2016-03-12T17:21:30.293 に答える
4

次のような構文を使用できます。

echo "insert into mytable values(1,1, \"`cat image`\")" | sqlite3 yourDb

blob の値を囲む " についてはわかりません。cat コマンドをバッククォートで囲んでいることに注意してください。これは、エコーの前に cat コマンドが実行されることを意味します。

[編集]

Blob は、"X" プレフィックス付きの 16 進数として格納されます。「hexdump」UNIX コマンドを使用して 16 進文字列を生成できますが、イメージを読み取って挿入するコマンド ライン ツールを作成する方がよいでしょう。この投稿の詳細: http://comments.gmane.org/gmane.comp.db.sqlite.general/64149

于 2012-07-02T11:56:12.070 に答える