Как программно заполнить базу данных - PullRequest
3 голосов
/ 22 апреля 2010

В настоящее время у меня есть приложение для iPhone, которое при запуске читает данные из внешнего XML-файла, а затем записывает эти данные в базу данных (однако, оно только читает / записывает данные, которые приложение пользователя раньше не видело)

Меня беспокоит, что будет каталог данных за несколько лет, и что, когда пользователь впервые запустит приложение, он должен будет прочитать это и быть ужасно медленным.

Наше предлагаемое решение состоит в том, чтобы включить эти данные, «предварительно встроенные» в базу данных приложений, чтобы им не приходилось загружать архивные данные при первой загрузке, которые уже находятся в приложении при его покупке.

Мой вопрос заключается в том, существует ли способ автоматического заполнения этих данных данными, скажем, из файла XML или чего-то еще. База данных находится в SQLite. Я бы заполнил его вручную, но, очевидно, это займет очень много времени, поэтому мне просто интересно, есть ли у кого-нибудь более ... программное решение ...

Ответы [ 3 ]

1 голос
/ 22 апреля 2010

Я собираюсь конкретизировать ответ Джейсона, я пометил свой пост вики-сообществом, поэтому я не должен получать за это ни одного очка.

Он не говорит о фиктивном приложении - напишите приложение, как вы это обычно делаете, но проверьте, существует ли база данных в вашем основном комплекте, прежде чем вызывать код, который заполняет список. Вы запускаете это в симуляторе, извлекаете сгенерированную базу данных sqllite и добавляете ее в свой проект - если вам нужно только прочитать его, вы можете прочитать его из основного каталога комплектов. Если вам нужно выполнить дальнейшую запись, скопируйте ее в область доступных для записи документов и используйте ее оттуда. Так что в основном для основного пользователя код для заполнения БД никогда не будет вызван ...

Единственным недостатком является то, что вы также включаете файлы plist, с которых вы читаете, даже если вам нужна только база данных. Вы можете создать другую цель сборки, которая была бы копией основной, с той лишь разницей, что она содержала файлы plist, а основная цель, которую вы создали для магазина приложений, - нет.

1 голос
/ 22 апреля 2010

Не принимать ответный гром Джейсона, я пока не могу комментировать, так что это должно быть здесь.

Приятно то, что вы можете получить доступ к файловой системе симулятора прямо на вашем Mac.Я сейчас далеко от своего, или я могу точно сказать вам, где искать, но я просто нахожу его, помещая имя файла db в прожектор и просто запуская его.

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

Вам нужно будет скопировать его, хотя ресурсы хранятся только для чтения и подписанычасть пакета приложения.

0 голосов
/ 22 апреля 2010

У меня была та же проблема с использованием sqlite, при массивной вставке это очень медленно. Таким образом, лучший способ это обеспечить непосредственно заполненную базу данных sqlite.

У вас есть другой способ, вместо INSERT INTO, заполнить базу данных sqlite. Вы можете создать CSV-файл для каждой таблицы и загрузить в таблицы, используя свой компьютер и оболочку sqlite:

Всего 2 простые команды:

.separator SEPARATOR
.import FILE TABLE 

Пример:

adslol:~ user$ sqlite3 
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .separator ;
sqlite> .import myData.csv nameOfMyTable
sqlite> .quit

Надеюсь, это то, что вы искали:)

Если вам нужен хороший клиент для sqlite3, попробуйте SQLite Manager , это дополнения Firefox.

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