Загрузить большой объем данных в БД - Android

Я создаю новое приложение для платформы Android, и мне нужно предложение. У меня есть большой объем данных, которые я хочу импортировать в базу данных sqlite, например, 2000 строк. Мой вопрос: как лучше всего загрузить данные в БД?

Два способа, о которых я думаю:

  1. XML-файл, который содержит все данные, а затем загружает их с помощью объекта DocumentBuilder.
  2. CSV-файл и загружает его с помощью String Tokenizer. Нашел этот post.

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

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

Любое предложение было бы здорово. Спасибо.


person Ofir A.    schedule 31.05.2012    source источник
comment
Если вы в конечном итоге используете CSV-файл, вместо того, чтобы анализировать его самостоятельно, вероятно, будет проще использовать Apache Commons CSV: commons.apache.org/csv   -  person David Conrad    schedule 31.05.2012


Ответы (3)


Используйте InsertHelper для массовой вставки. Взгляните на этот другой вопрос

person lujop    schedule 31.05.2012

Вместо файлов XML или CSV вы можете напрямую использовать внешнюю базу данных sqlite, которую вы подготовили на своем компьютере. Этот метод объясняется здесь: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

person Hakan Serce    schedule 31.05.2012

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

При синтаксическом анализе имейте в виду, что построение полного дерева объектов в памяти (например, синтаксический анализатор XML DOM) потребляет много памяти и приводит к большому количеству аллокаций — модель синтаксического анализа по запросу, такая как XPP/GSON, предпочтительнее.

person Konstantin Pribluda    schedule 31.05.2012