bashスクリプト内のsqlite3データベースにバイナリデータ(png、jpg、gifなど)を挿入します。
スタンドアロンバイナリsqlite3
を使用します。どのようにしてSQL文を書くことができますか?
ご協力いただきありがとうございます。bashのsqlite3データベースにバイナリデータを挿入するには?
答えて
これを行う方法の1つです。
そして、ここでは、我々はデータをストアがであることがわかり
[[email protected] tmp]$ sqlite3 foodb "create table foo (bar blob);"
[[email protected] tmp]$ echo "insert into foo values (X'`hexdump -ve '1/1 "%.2x"' test.jpg`');" | sqlite3 foodb
EDIT」:ファイルtest.jpg
はsqliteののバイナリリテラル形式にhexdump
編をされた後、テーブルのデータベースfoodb
のfoo
に挿入されています.jpgファイルを復元することができます。
[[email protected] tmp]$ sqlite3 foodb "select quote(bar) from foo;" | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' > bla.jpg
[[email protected] tmp]$ ll *.jpg
-rw-rw-r-- 1 someone someone 618441 Apr 28 16:59 bla.jpg
-rw-rw-r-- 1 someone someone 618441 Apr 28 16:37 test.jpg
[[email protected] tmp]$ md5sum *.jpg
3237a2b76050f2780c592455b3414813 bla.jpg
3237a2b76050f2780c592455b3414813 test.jpg
さらに、この方法は、sqlitを使用して.jpgを保存するため、スペース効率が高くなりますeのBLOBタイプです。たとえば、base64エンコーディングを使用してイメージをストリング化しません。私は@ sixfeetsixの答えにコメントで述べたように
[[email protected] tmp]$ ll foodb
-rw-r--r-- 1 someone someone 622592 Apr 28 16:37 foodb
ありがとうございます。私はそれを試してみます。 – kev
これはうまくいきません:(20分前に投稿するつもりだったので動作しないことは分かっていますが、いくつかのテストケースが動作しないことがあります。最初の0x00で切り捨てられます(jpegではほとんどどこかにNULLバイトがあることが保証されています)。 'quote(bar) 'を選択すると元のx' ... 'が返されます。 –
@DavidSouther:そうではありませんバイナリデータで0x00を持つのは普通ですか?sqliteのBLOB型について読んでください。人間が読める形式で保存されているデータは、空間効率の良い方法で保存されていますが、OPではこのような必要はありません。 –
は、データを挿入するだけで問題の半分です。それが入ったら、それを取り戻す必要があります。これにxxdを使うことができます。
#A nice hubble image to work with.
echo 'http://asd.gsfc.nasa.gov/archive/hubble/Hubble_20th.jpg' > imageurl.txt
image=imageurl.txt
curl $image > image.jpg
#Insert the image, using hexdump to read the data into SQLite's BLOB literal syntax.
echo "create table images (image blob);" | sqlite3 images.db
echo "insert into images (image) values(x'$(hexdump -ve '1/1 "%0.2X"' image.jpg)');" | sqlite3 images.db 2>&1
#Select just the one image, then use xxd to convert from hex back to binary.
echo "select quote(image) from images limit 1 offset 0;" | sqlite3 images.db | tr -d "X'" | xxd -r -p > newimage.jpg
eog newimage.jpg
- 1. PythonでSqlite3を使用してバイナリデータをデータベースに挿入する方法は?
- 2. Qtを使ってPostgreSQLデータベースに挿入するバイナリデータをエスケープするには?
- 3. Ruby-sqlite3、データベースに非ASCII文字列を挿入する
- 4. python/sqlite3で列名を認識してデータベースにデータを挿入
- 5. sqlite3のは、私はsqlite3のデータベースに次を挿入しようとしている文のエラー
- 6. Pythonでsqlite3の列に値のリストを挿入するには?
- 7. オブジェクト辞典のリストをsqlite3に挿入
- 8. デフォルトのsqlite3データベースにデータを挿入するスクリプトの作成方法django
- 9. bashのストリームにタイムスタンプを挿入する
- 10. PythonでSQLite3にNullを挿入
- 11. Python、XMLデータをsqlite3に挿入
- 12. データベースにレコードを挿入するには
- 13. データベースにデータを挿入するには?
- 14. Ultraliteデータベースのバイナリデータを挿入中にエラーが発生しました。
- 15. Pythonマルチスレッドsqlite3の挿入
- 16. Pythonのsqlite3:テーブルに挿入するWHERE NOT EXISTS、using?代入パラメータ
- 17. どのように変数をデータベーステーブルに挿入するsqlite3 - Python
- 18. iPhoneのSQLite3データベースのテーブルに挿入中にエラーが発生しました
- 19. sqlite3 - 値を挿入する - javascriptオブジェクト
- 20. データベースに挿入
- 21. データベースに挿入
- 22. バイナリデータをMySQLに挿入する(PreparedStatementを使用しない)
- 23. PHP-プリペアドステートメントを使用してmysqlにバイナリデータを挿入する
- 24. PDOを使用してMSSQLにバイナリデータを挿入する方法
- 25. Pythonでバイナリデータをmysqlに挿入して取得する
- 26. postgresデータベースに挿入する
- 27. PHPデータベースに挿入する
- 28. laravel 5.2に挿入する前にIDをデータベースに挿入する方法は?
- 29. Insertコマンドは、DBにデータを挿入するとき、私は、sqlite3のデータベースを持っている戻りコードSQLITE_ERROR
- 30. Pythonを使用してsqlite3データベースにデータを挿入できません
コマンドラインツールでは、このような任意のデータを挿入することはできません。最初にデータをbase64でエンコードすることができました。 – larsks