Я хочу вставить двоичные данные (png, jpg, gif и т. Д.) В базу данных sqlite3 в сценарии bash.
Я использую автономный двоичный код sqlite3
. Как написать инструкцию SQL?
Спасибо за помощь.Как вставить двоичные данные в базу данных sqlite3 в bash?
ответ
Вот один из способов сделать это. Файл test.jpg
вставляется в таблицу foo
базы данных foodb
после того, как hexdump
ред двоичному буквального формате SQLite:
[[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
И здесь мы видим, что данные хранят в " полной верности»в качестве файла .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
Кроме того, этот подход является пространство эффективно, как хранить .jpg, используя sqlit e BLOB. Он не строит изображение, используя, например, кодировку base64.
[[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 в двоичных данных. Пожалуйста, прочитайте о BLOB-типе sqlite. То, что вы ожидаете, это данные, хранящиеся в некотором человеко-читаемом формате, что является менее экономичным по площади, поэтому OP не требует такого требования. –
Как я уже упомянул в ответ на ответ @ sixfeetsix, вставка данных является лишь половиной проблемы. Как только он появится, вам нужно будет вернуть его. Для этого мы можем использовать 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. Как вставить двоичные данные в базу данных с помощью Sqlite3 в Python?
- 2. Как вставить список в базу данных sqlite3
- 3. Вставить пользовательский объект в базу данных Sqlite3
- 4. Невозможно вставить данные в базу данных sqlite3 с помощью Python
- 5. Вставьте данные в базу данных sqlite3
- 6. Вставить данные в объект в базу данных
- 7. Вставить данные в базу данных?
- 8. Вставить данные в базу данных
- 9. Я хочу вставить данные в базу данных
- 10. Как вставить данные в базу данных
- 11. Как вставить данные в базу данных C#?
- 12. Как вставить данные в базу данных Laravel?
- 13. Как вставить данные в базу данных Kentico
- 14. C#: Как вставить данные в базу данных?
- 15. Как вставить данные edittext в базу данных
- 16. Как вставить данные в базу данных?
- 17. Как вставить данные сессии в базу данных
- 18. Как вставить данные ArrayList в базу данных
- 19. Как вставить данные в базу данных?
- 20. Вставить данные набора данных в базу данных
- 21. Как вставить XML-анализируемое содержимое в базу данных sqlite3
- 22. Вставить данные в базу данных WinForm в базу данных
- 23. Как вставить данные в базу данных SQLite в iPhone
- 24. Вставить данные в базу данных в Android
- 25. Не удается вставить в базу данных sqlite3 в cocos2dx
- 26. SQL вставить двоичные данные
- 27. Вставить данные в базу данных в angularjs
- 28. sqlite3 вставить и прочитать данные BLOB в базе данных
- 29. Вставить данные пользовательского обмена в базу данных
- 30. Вставить значения из списка в базу данных sqlite3
Я не уверен, что инструмент командной строки позволит вам вставлять произвольные данные. Полагаю, вы могли бы base64 кодировать данные. – larsks