SQLite3: Пакетная вставка? - PullRequest
1 голос
/ 29 октября 2010

У меня есть какой-то старый код в проекте, который я беру на себя. Одна из моих первых задач - уменьшить окончательный размер двоичного файла приложения. Поскольку содержимое содержит много текстовых файлов (около 10.000 из них), моей первой мыслью было создание базы данных, содержащей их все.

Я не очень привык к SQLite и Core Data, поэтому у меня есть два основных вопроса:

1 - Правильно ли мое предположение? Должен ли мой файл SQLite иметь меньший размер, чем все текстовые файлы вместе взятые? 2 - Есть ли способ автоматизировать задачу по переносу их всех в мою вновь созданную базу данных (возможно, с использованием какого-либо графического интерфейса или скрипта), по одному файлу на запись в одной таблице?

Я все еще экспериментирую с CoreData, но я уже провел большой поиск и не смог найти ничего подходящего для объединения всего в файле базы данных. Выполнение этого вручную оказалось уже непростой задачей!

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Альтернативой использованию SQLite может быть использование zipfile. Это легко создать, и, несомненно, будет безопасное место (и определенно уменьшит количество файлов). Существует несколько реализаций использования zip-файлов на iphone, например ziparchive или TWZipArchive .

1 голос
/ 29 октября 2010

1 - Вероятно, он не будет меньше, но вы можете сжать файлы перед сохранением в базе данных. Или без базы данных по этому вопросу.

2 - Конечно. Для этого не должно быть слишком сложно написать скрипт.

0 голосов
/ 29 октября 2010

Если вам нужна команда массовой вставки SQLite для написания сценария для 2), AFAIK нет.Подготовленные вставки в цикле внутри транзакции - лучшее, что вы можете сделать, я думаю, что для вставки 10000 записей потребуется всего несколько секунд (если таковые имеются).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...