2009-03-17 2 views
1

У меня есть несколько сценариев, которые генерируют &. Собирайте большие объемы данных, которые мне понадобятся для того, чтобы засеять мою базу данных и в будущем добавить к ней большие суммы. Каков наилучший способ импорта большого количества реляционных данных в базу данных рельсов в качестве исходных данных и с перерывами во время производства?Рельсы: сценарий для импорта данных

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

Я искал битку и видел ар-расширения и seed_fu, а также идею использования светильников.

С ar-расширениями все примеры кажутся постоянными импортными данными csv (вероятно, из табличных дампов, которые, по-видимому, являются его основным использованием) без упоминания об ассоциациях обработки или об избежании дублирования обновлений. В моем случае у меня нет идентификаторов, внешних ключей или объединений таблиц в моем скрипте, поэтому мне кажется, что это не сработает для меня, если я не буду сам справляться с этой сложностью.

С seed_fu, похоже, что он может обрабатывать реляционные аспекты создания данных, но все равно потребует от меня указать идентификаторы (как вы можете узнать, какие из них доступны на производстве?), И смешать код с данными.

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

Или мне лучше было бы просто сначала поместить мои данные в локальный sqlite db, а затем использовать методы демпинга с прямым столом?

ответ

1

Недавно мне было передано приложение для рельсов, которое потребовало некоторых импортированных данных, и все это было обработано в грабли. Все данные поступали в виде файлов формата csv и обрабатывались по каждому классу/модели и т. Д. По мере необходимости. Это было относительно хорошо, потому что я был новичком в системе, так как было очень легко увидеть, куда идут данные и как они применяются. При импорте данных вы можете проверить конфликты/конфликты id и обрабатывать их соответственно.

2

Я делал это раньше с CSV-файлами. У меня есть задание cron, которое собирает данные и помещает их в доступные CSV-файлы. Затем у меня есть задача rake (также в cron, но в другом поле), которая ищет CSV, а если есть, вызывает методы модели для создания объектов из строк CSV.

Модели имеют метод csv_create_or_update, который принимает строку CSV. Этот метод оборачивает проблему с идентификатором, а также позволяет проводить проверки (или нет) при вводе данных.

Смежные вопросы