Как экспортировать базу данных mongodb
Перейти к содержимому

Как экспортировать базу данных mongodb

  • автор:

MongoDB: импорт и экспорт (mongoimport.exe mongoexport.exe)

Несколько примеров, чтобы показать вам, как использовать mongoexportрезервную копию базы данных.

Преведены примеры как для *nix так и для windows систем

Различие в ключах по вызову пример -d и /d

Помощь по утилите:

mongoexport.exe —help или mongoexport
Небольшой список аргументов из примеров ниже:
options:
-h [ —host ] arg mongo host to connect to ( /s1,s2 for
-u [ —username ] arg username
-p [ —password ] arg password
-d [ —db ] arg database to use
-c [ —collection ] arg collection to use (some commands)
-q [ —query ] arg query filter, as a JSON string
-o [ —out ] arg output file; if not specified, stdout is used

1.1 Экспортировать все документы (все поля) в файл export.json
mongoexport -d Your_DB -c Your_Collect -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /o export.json

1.2 Экспортировать все документы только с полями «name» и «company».
mongoexport -d Your_DB -c Your_Collect -f «name,company» -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /f «name,company» /o export.json

1.3 Экспортируйте все документы с поисковым запросом, в этом случае company > 100000
mongoexport -d Your_DB -c Your_Collect -f «name,company» -q ‘>’ -o export.json
mongoexport.exe /d Your_DB /c Your_Collect /f «name,company» /q ‘>’ /o export.json

1.4 Подключитесь к удаленному серверу, например Your_Server.com, используя имя пользователя и пароль.
mongoexport -h Your_Server.com:37017 -d Your_DB -c Your_Collect -u Your_Username -p Your_Pass -o export.json
mongoexport.exe /h Your_Server.com:37017 /d Your_DB /c Your_Collect /u Your_Username /p Your_Pass /o export.json

Внимание!
Все экспортируемые документы будут в формате JSON.

2. Восстановить базу данных с помощью mongoimport
Несколько примеров, чтобы показать вам, как использовать это mongoimportдля восстановления базы данных.

Просмотрите некоторые общие варианты использования:

mongoimport.exe —help или mongoimport
Небольшой список аргументов из примеров ниже:
options:
-h [ —host ] arg mongo host to connect to ( /s1,s2 for sets)
-u [ —username ] arg username
-p [ —password ] arg password
-d [ —db ] arg database to use
-c [ —collection ] arg collection to use (some commands)
-f [ —fields ] arg comma separated list of field names e.g. -f name,age
—file arg file to import from; if not specified stdin is used
—drop drop collection first
—upsert insert or update objects that already exist

2.1Импортирует все документы из файла «export.json» в database.collection с именем «Your_DB.Your_Collect»:
Все не существующие базы данных или коллекции будут созданы автоматически.

mongoimport -d Your_DB -c Your_Collect —file export.json
mongoimport.exe /d Your_DB /c Your_Collect —file export.json

2.2 Импортирует все документы, вставит или обновит объекты, которые уже существуют (на основе _id):
mongoimport -d Your_DB -c Your_Collect —file export.json —upsert
mongoimport.exe /d Your_DB /c Your_Collect —file export.json —upsert

2.3 Подключитесь к удаленному серверу — Your_Server.com и импортируйте документы из файла export.json на удаленный сервер MongoDB
mongoimport -h Your_Server.com:37017 -d Your_DB -c Your_Collect -u Your_Username -p Your_Pass —file export.json
mongoimport.exe /h Your_Server.com:37017 /d Your_DB /c Your_Collect /u Your_Username /p Your_Pass —file export.json

Как импортировать базу данных в mongodb?

Есть папка с файламиjon и bson. Как ее импортировать в MongoDB?

  • Вопрос задан более трёх лет назад
  • 554 просмотра

2 комментария

Простой 2 комментария

Катя Фенченко @kathleen1982 Автор вопроса

файлы json и bson

space2pacman

Ярослав Иванов @space2pacman

Решения вопроса 0

Ответы на вопрос 1

zoonman

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

mongodb

  • MongoDB

Можно ли в одном запросе обновить (если существует) или вставить (в противном случае) элемент в массив?

  • 1 подписчик
  • 20 окт.
  • 25 просмотров

mongodb

  • MongoDB
  • +1 ещё

Как создавать вложенные модели в mongodb?

  • 2 подписчика
  • 19 окт.
  • 74 просмотра

вконтакте

  • ВКонтакте
  • +2 ещё

Как написать мини приложения вк с базой данных?

  • 1 подписчик
  • 09 окт.
  • 111 просмотров

mongodb

  • MongoDB

Как решить проблему SSL peer certificate validation failed: unable to get issuer certificate?

  • 1 подписчик
  • 03 окт.
  • 20 просмотров

mongodb

  • MongoDB
  • +1 ещё

Как исключить поля структуры для апдейта в MongoDB, используя go mongo-driver?

  • 2 подписчика
  • 27 сент.
  • 101 просмотр

laravel

  • Laravel
  • +1 ещё

Как сформировать запрос к MongoDB с поиском по int-полям?

  • 1 подписчик
  • 19 сент.
  • 54 просмотра

mongodb

  • MongoDB
  • +1 ещё

Model.findOneAndUpdate() больше не принимает обратный вызов?

  • 1 подписчик
  • 18 сент.
  • 40 просмотров

python

  • Python
  • +1 ещё

Как добавить значение в пустой массив MongoDB?

  • 1 подписчик
  • 14 сент.
  • 38 просмотров

python

  • Python
  • +1 ещё

Почему find не находит значения в БД?

  • 1 подписчик
  • 11 сент.
  • 96 просмотров

mongodb

  • MongoDB

Как можно, и вообще можно ли хранить фото и видео в базе данных mongo?

  • 3 подписчика
  • 31 авг.
  • 520 просмотров

от 120 000 ₽

от 250 000 до 350 000 ₽

от 350 000 ₽

30 окт. 2023, в 01:00

50000 руб./за проект

30 окт. 2023, в 00:03

10000 руб./за проект

29 окт. 2023, в 23:47

1200 руб./за проект

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

  • Возможно ли восстановить сайт?
    • 2 подписчика
    • 1 ответ
    • 3 подписчика
    • 1 ответ
    • 1 подписчик
    • 2 ответа
    • 2 подписчика
    • 1 ответ
    • 2 подписчика
    • 0 ответов
    • 1 подписчик
    • 2 ответа
    • 2 подписчика
    • 0 ответов
    • 2 подписчика
    • 1 ответ
    • 2 подписчика
    • 0 ответов
    • 2 подписчика
    • 1 ответ

    Как экспортировать данные из MongoDB в CSV

    MongoDB неплохо справляется с задачей хранения огромных коллекций неструктурированных данных. Иначе говоря, если вы не можете описать структуру своих данных и не знаете как она изменится в будущем, но можете эти данные отобразить в json-формате, то mongo справится с задачей хранения schemaless данных.

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

    print("id,name,city"); db.collection.find(< "location.country": "anything" >, < "id": 1, "name": 1, "location.city": 1 >).forEach(function(item) < if(typeof item.location === "undefined") < city = ""; >else < city = item.location.city; >print(item.id + "," + item.name + "," + city ); >);

    И выполнить его в MongoDB таким способом:

    mongo database export.js > out.csv

    Поясню по скрипту:

    • в первой строке выводим заголовки столбцов в CSV формате
    • затем фильтруем (find) коллекцию (db.collection) по полю (location.country)
    • перечисляем имена полей («id»: 1) которые нужно извлечь из документов
    • если в документе не определено поле (typeof item.location === «undefined»), задать ему значение по-умолчанию
    • формируем строку со значениями через запятую в CSV формате

    Post Views: 1 780

    Читайте также

    Как редактировать crontab через nano Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для…

    Как использовать команду watch с пайпами Периодически при работе с консолью Linux нужно пронаблюдать за изменением вывода какой-либо команды с промежутком в несколько секунд. Для этого…

    Поменять местами значения переменных в PHP Существует красивое и элегантное решение в одну строку: list($a, $b) = [$b, $a]; А для PHP версий 5.3 и старше…

    Импорт и экспорт баз данных MongoDB в Ubuntu 14.04

    MongoDB – одна из самых популярных систем управления базами данных NoSQL. Она производительна, надёжна, проста в использовании и масштабировании. Данное руководство научит импортировать и экспортировать базы данных MongoDB.

    Примечание: В данном руководстве данные будут перемещаться в удобном для восприятия человеком формате, совместимом с другими программами. В отличие от этого, операции резервного копирования и восстановления данных связаны с определенными двоичными данными MongoDB, которые отвечают не только за последовательность и целостность данных, но и за специфические параметры MongoDB. Таким образом, использовать резервное копирование и восстановление при миграции данных предпочтительнее в совместимых системах.

    Требования

    • Сервер Ubuntu 14.04
    • Не-root пользователь с доступом к sudo
    • Предварительно установленная система управления базами данных MongoDB (инструкции по установке – здесь)

    Базовые понятия

    Прежде чем приступить к перемещению данных, нужно ознакомиться с базовыми понятиями. В целом, система MongoDB в этом смысле имеет много общего с MySQL.

    Для хранения информации MongoDB использует файлы json и bson (бинарный json). Json – это удобочитаемый для человека текстовый формат обмена данными. После перемещения данных в формате json ими можно управлять при помощи любого инструмента, поддерживающего такой формат.

    Документ json выглядит так:

    С форматом json очень удобно работать, однако он не поддерживает всех типов данных, поддерживаемых bson. Это значит, что при передаче данных может произойти потеря точности. Потому для создания и восстановления бэкапа рекомендуется использовать формат bson.

    В системе MongoDB не нужно явно создавать БД. Если БД, указанная в импорте, ещё не существует, система создаст её автоматически. Ещё проще дела обстоят с коллекциями (таблицами). В отличие от остальных систем управления базами данных, MongoDB автоматически создаёт структуру при внесении первой строки.

    Чтение или внесение больших объёмов данных в MongoDB может быть очень затратным и потребить большую часть CPU, памяти и дискового пространства. Учитывая, что MongoDB часто используется для работы с Big Data, это критическая проблема. Самое простое её решение – выполнять экспорт и бэкап данных во время низкого трафика (например, ночью).

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

    Импорт данных MongoDB

    Для примера используем один из образцов базы данных MongoDB. Загрузите файл json:

    После завершения загрузки в текущем каталоге появится файл primer-dataset.json (12 MB). Попробуйте импортировать данные из этого файла в новую БД (в данном руководстве она называется newdb) в коллекцию restaurants. Для этого используется команда mongoimport:

    sudo mongoimport —db newdb —collection restaurants —file primer-dataset.json

    2016-01-17T14:27:04.806-0500 connected to: localhost
    2016-01-17T14:27:07.315-0500 imported 25359 documents

    Как показала эта команда, система импортировала 25359 документов. Обратите внимание: поскольку целевой БД newdb не существовало, СУБД создала её автоматически.

    Чтобы убедиться, что импорт данных прошёл успешно, подключитесь к новой БД:

    sudo mongo newdb

    Теперь вы подключены к новой базе newdb. Обратите внимание на изменившуюся командную строку.

    При помощи следующей команды можно посчитать документы в коллекции restaurants:

    Команда должна вернуть точное количество импортированных документов (в данном случае – 25359). Для дополнительной проверки можно выбрать первый документ из коллекции:

    «_id» : ObjectId(«569beb098106480d3ed99926»),
    «address» : «building» : «1007»,
    «coord» : [
    -73.856077,
    40.848447
    ],
    «street» : «Morris Park Ave»,
    «zipcode» : «10462»
    >,
    «borough» : «Bronx»,
    «cuisine» : «Bakery»,
    «grades» : [
    «date» : ISODate(«2014-03-03T00:00:00Z»),
    «grade» : «A»,
    «score» : 2
    >,
    .
    ],
    «name» : «Morris Park Bake Shop»,
    «restaurant_id» : «30075445»
    >

    Такая подробная проверка может выявить такие проблемы, как повреждение контента документа, несогласованность данных и т.п. Формат The json использует кодирование UTF-8, потому импортировать и экспортировать данные нужно именно с таким шифрованием. В противном случае MongoDB установит это шифрование автоматически.

    Чтобы закрыть командную строку MongoDB, введите:

    Эта команда вернёт вас в обычную командную строку системы.

    Экспорт данных MongoDB

    Как уже говорилось в начале, при экспорте можно получить данные в удобочитаемом формате. По умолчанию информация экспортируется в формате json, но также можно настроить использование csv (comma separated value).

    Для экспорта данных MongoDB используется команда mongoexport. Она позволяет выполнить подробный экспорт данных: указать имя БД, коллекцию, поле, и даже запрос.

    Давайте попробуем экспортировать коллекцию restaurants из базы данных newdb:

    sudo mongoexport —db newdb -c restaurants —out newdbexport.json

    Флаг –db позволяет указать имя БД, флаг -c указывает коллекцию, –out задаёт файл, в который нужно сохранить данные.

    В случае успешного перемещения данных команда вернёт:

    2016-01-20T03:39:00.143-0500 connected to: localhost
    2016-01-20T03:39:03.145-0500 exported 25359 records

    Согласно выводу команды, было экспортировано 25359 документов. Как видите, это совпадает с количеством импортированных документов.

    В некоторых случаях нужно экспортировать только часть коллекции. Учитывая структуру и содержание файла restaurants, попробуйте экспортировать все документы, содержащие информацию о китайских ресторанах, находящихся в Бронксе. Чтобы получить эти данные, оставаясь в MongoDB, создайте соединение с БД:

    sudo mongo newdb

    Затем создайте запрос:

    Результат будет выведен в терминал. Чтобы закрыть командную строку MongoDB, введите:

    Чтобы экспортировать данные из системной командной строки пользователя sudo (а не при подключении к БД), добавьте в команду mongoexport часть запроса при помощи флага –q:

    sudo mongoexport —db newdb -c restaurants -q «< borough: 'Bronx', cuisine: 'Chinese' >» —out Bronx_Chinese_retaurants.json

    Обратите внимание: в команде используются простые кавычки, а не двойные. При использовании двойных кавычек или специальных символов (например, $) нужно использовать обратный слеш (\), чтобы избежать их в запросе.

    Если экспорт прошёл успешно, команда вернёт:

    2016-01-20T04:16:28.381-0500 connected to: localhost
    2016-01-20T04:16:28.461-0500 exported 323 records

    Команда показывает 323 экспортированных записи. Их можно найти в файле Bronx_Chinese_retaurants.json.

    Заключение

    Это руководство охватывает только основы передачи данных в MongoDB. Дополнительную информацию о работе с этой СУБД можно найти в следующих руководствах:

    • Настройка масштабируемой базы данных MongoDB
    • Бэкап, восстановление и перемещение данных MongoDB в Ubuntu 14.04

    Репликация данных полезна не только при масшабировании, она также может пригодиться в повседневной работе. Репликация данных позволяет поддерживать работу приложения в случае сбоя сервера MongoDB; это делается за счёт ведомых (или slave) серверов MongoDB. В процессе репликации задействованы логи operations (или oplog), которые хранят все операции, изменившие данные. Эти файлы можно использовать для восстановления данных.

    Имейте в виду: резервное копирование, как правило, выполняется в ночное время; если вы решите восстановить резервную копию в вечернее время, вы потеряете все обновления данных с момента последнего резервного копирования.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *