Импортируйте 5 миллионов записей в приложение rails - PullRequest
1 голос
/ 13 мая 2010

Нам необходимо импортировать большой объем данных (около 5 миллионов записей) в приложение postgresql db под rails. Данные будут предоставлены в формате xml с изображениями внутри, закодированными с помощью Base64.

Предполагаемый размер XML-файла составляет 40 ГБ. Какой xml-парсер может обработать такой объем данных в ruby?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 13 мая 2010

Вы захотите использовать какой-нибудь SAX-парсер . Парсеры SAX не загружают все в память сразу.

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

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

1 голос
/ 13 мая 2010

Вы можете преобразовать данные в CSV и затем загрузить их в свою базу данных, используя возможности загрузки СУБД CSV. Для MySQL это , а для PostgreSQL . Я бы не использовал ничего встроенного в Ruby для загрузки файла 40 ГБ, это не слишком хорошо с памятью. Лучше всего оставить «профессионалам».

1 голос
/ 13 мая 2010

Вы должны использовать синтаксический анализатор XML SAX, как сказал Юха. Я думаю, что libxml - самая быстрая библиотека xml для ruby.

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