Импорт даты-типа данных с использованием mongoimport
У меня есть много ГБ данных, хранящихся в базе данных PostgreSQL, и мне нужны те, которые будут импортированы в MongoDB. Я сделал это, используя экспорт CSV и mongoimport.
В этом CSV есть такие столбцы, как "2011-06-25", и он был импортирован как строка, а не как MongoDate, поэтому я не могу эффективно искать по дате.
Я нашел это: http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-Example%3AImportingInterestingTypes
но пример говорит, мне нужно использовать структуру JSON для файла. Мне действительно нужно экспортировать JSON файл из PostgreSQL?
Если я делаю - как?
Если я этого не делаю, как экспортировать "MongoDate" через CSV?
Ответы
Ответ 1
Ваши варианты:
-
импортируйте материал как CSV и преобразуйте данные после импорта в Date() (либо используя консоль mongo, либо используя script, написанный на вашем любимом языке)
-
импортируйте свои данные как JSON и используя дескриптор $date для преобразования строк даты в экземпляры даты
Ответ 2
На самом деле первый вариант довольно быстрый даже с огромными данными. Вот пример запроса с помощью консоли mongo:
/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});"
Ответ 3
Напишите script, используя ваш любимый язык для импорта данных. Это позволит вам управлять типом данных и применять структурные изменения к данным.
Как правило, вы обнаружите, что отображение данных не совпадает с преобразованием из табличных данных в базу данных документа.
Если вы пишете script, вы также можете поддерживать запуск нескольких копий (или потоков) для повышения скорости импорта.