Mongodb импорт и расшифровка измененных строк - PullRequest
1 голос
/ 01 октября 2011

У меня есть большой CSV-файл, который содержит более 30 миллионов строк.Мне нужно загружать этот файл ежедневно и определить, какие строки были изменены.К сожалению, нет уникального ключевого поля, но можно использовать четыре поля, чтобы сделать его уникальным.После того, как я определил измененные строки, я хочу экспортировать данные.Я пытался использовать традиционное решение SQL Server, но производительность настолько низкая, что не сработает.Поэтому я смотрю на Mongodb - ему удалось импортировать файл примерно за 20 минут (что нормально).Сейчас у меня нет опыта использования Monogdb и, что более важно, знания лучших практик.Итак, моя идея заключается в следующем:

  1. Как один раз - Импорт данных в коллекцию с использованием mongoimport.

  2. Скопируйте всеуникальный идентификатор, сгенерированный mongo и помещающий их в отдельную коллекцию.

  3. Импортируйте новые данные в существующую коллекцию, используя поля upsert, которые должны создавать новый идентификатор для каждой новой и измененной строки.

  4. Сравните «копию» с новой коллекцией, чтобы вывести список всех измененных строк.

  5. Экспорт измененных данных.

Для меня это сработает, но я надеюсь, что есть гораздо лучший способ решить эту проблему.

1 Ответ

0 голосов
/ 02 октября 2011

Использовать unix sort и diff.

Сортировка файла на диске

sort -o new_file.csv -t ',' big_file.csv
sort -o old_file.csv -t ',' yesterday.csv

diff new_file.csv old_file.csv

Команды могут нуждаться в настройке.

Вы также можете использовать mysql для импорта файла через

http://dev.mysql.com/doc/refman/5.1/en/load-data.html (ФАЙЛ ЗАГРУЗКИ)

, а затем создайте KEY (или первичный ключ) в 4 полях.

Затем загрузите вчерашний файл в другую таблицу и затем используйте операторы 2 sql для сравнения файлов ...

Но diff будет работать лучше!

-daniel

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