2016-01-17 3 views
1

Используя эту команду:Экспорт всех сгустки из SQLite до файлов

sqlite3 my.db "SELECT writefile('object0.jpg', MyBlob) FROM MyTable WHERE id = 1"  

я могу сохранить изображение хранится в виде двоичного объекта в таблице в моей дб.
Как я могу изменить это так, чтобы все изображения сохранялись вместо 1?

ответ

2

Если два шага, наивные решением является вариантом, вы можете сделать:

sqlite3 my.db "SELECT id from MyTable" > /tmp/id.list 

для получения списка всех идентификаторов, то

cat /tmp/id.list | while read id; do echo SELECT writefile\(\'object$id.jpg\', MyBlob\) FROM MyTable WHERE id = $id\;; done | sqlite3 my.db 

для создания и выполнения команд для хранения все капли.

+0

Он ничего не делает. Я пробовал с 'head -n 1 /tmp/id.list> test.list' для 1 id и запускал вторую команду. Я не получаю сообщение об ошибке, но файл не создается – Jim

+0

Хорошо, я решил проблему. Как я могу изменить так, чтобы $ id находился в кавычках? Я вижу, что если я делаю «$ id» или «$ id», значение не задано – Jim

+0

Есть ли способ сделать это в одной строке? – Jim

2

Использование SQL конкатенации (||) для построения имен файлов:

sqlite3 my.db "SELECT writefile('object' || id || '.jpg', MyBlob) FROM MyTable" 
Смежные вопросы