Какой самый эффективный способ построить базу данных SQLite из данных в файле? - PullRequest
1 голос
/ 23 января 2011

У меня есть один текстовый файл с данными в текстовом формате, и я хочу автоматически поместить эти данные в базу данных для дальнейшего использования в приложении Ruby on Rails, и я хочу использовать Ruby для решения этой проблемы.

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

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

1 Ответ

3 голосов
/ 23 января 2011

Я считаю, что сиквел быстрее ActiveRecord, но оба должны быть в порядке.

  1. Считайте ваш текстовый файл в память. Если он слишком велик, чтобы поместиться в память, вы можете использовать File.foreach для работы с ним по одной строке за раз.

  2. Разобрать ваш текстовый файл в массив логических полей. Я бы предложил использовать регулярные выражения, если ваш текстовый файл не CSV.

  3. Выполните multi_insert в вашей базе данных, которая использует одну команду SQL для одновременной вставки n строк.

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

Без дополнительной информации о вашем "текстовом файле" это будет настолько полезно, насколько я смогу.

...