Import и Export База данных MongoDB
Collection это понятие в MongoDB, индентично с понятием Table в базе данных отношений (Oracle, SQLServer,MySQL. ).
mongodump: Используется для export (экспорта) всех данных из базы данных в файлы (Вставить в папку), включая некоторые файлы (bson, json)
mongostore: Используется для import (импорта) данных в базу данных из папки dump (Продукт mongodump упомянутый выше)
2. Import/Export Collection
mongoexport
# Export to json mongoexport -d database_name - c collection_name -o outfile.json # Export to file csv mongoexport --csv -o /tmp/people.csv -d school -c people -f firstName,lastName,telephone,email
mongoimport
# Import from json file mongoimport -d database_name -c collection_name outfile.json # Import from csv file # --headerline: Using the first row of data as the column name of the Collection. mongoimport -d database_name -c collection_name --type csv --file locations.csv --headerline
Импорт и экспорт баз данных 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), которые хранят все операции, изменившие данные. Эти файлы можно использовать для восстановления данных.
Имейте в виду: резервное копирование, как правило, выполняется в ночное время; если вы решите восстановить резервную копию в вечернее время, вы потеряете все обновления данных с момента последнего резервного копирования.
Копирование данных из базы данных MongoDB Atlas или в нее с помощью Фабрики данных Azure или Synapse Analytics
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия Copy в конвейере Фабрики данных Azure или Azure Synapse Analytics копировать данные из базы данных MongoDB Atlas и в нее. Это продолжение статьи об обзоре действия копирования, в которой представлены общие сведения о действии копирования.
Поддерживаемые возможности
Соединитель MongoDB Atlas поддерживается для следующих возможностей:
| Поддерживаемые возможности | IR |
|---|---|
| Действие копирования (источник/приемник) | ① ② |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Список хранилищ данных, которые поддерживаются в качестве источников/приемников, см. в таблице Поддерживаемые хранилища данных.
Необходимые компоненты
Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.
Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.
Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.
Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для MongoDB Atlas с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать связанную службу для MongoDB Atlas с помощью пользовательского интерфейса на портале Azure.
-
Перейдите на вкладку «Управление» в рабочей области Фабрики данных Azure или Synapse и выберите «Связанные службы», после чего нажмите «Создать»:
- Фабрика данных Azure
- Azure Synapse




Сведения о конфигурации соединителя
Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей Фабрики данных, относящихся к соединителю MongoDB Atlas.
Свойства связанной службы
Для связанной службы MongoDB Atlas поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| type | Для свойства type необходимо задать значение MongoDbAtlas. | Да |
| connectionString | Укажите строку подключения MongoDB Atlas, например mongodb+srv://:@../? . |
Пример:
< "name": "MongoDbAtlasLinkedService", "properties": < "type": "MongoDbAtlas", "typeProperties": < "connectionString": "mongodb+srv://:@../?", "database": "myDatabase", "driverVersion": "" >, "connectVia": < "referenceName": "", "type": "IntegrationRuntimeReference" > > >
Свойства набора данных
Полный список разделов и свойств, используемых для определения наборов данных, приведен в статье Наборы данных и связанные службы в фабрике данных Azure. Для набора данных MongoDB Atlas поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| type | Свойство type набора данных должно иметь значение MongoDbAtlasCollection. | Да |
| collectionName | Имя коллекции в базе данных MongoDB Atlas. | Да |
Пример:
< "name": "MongoDbAtlasDataset", "properties": < "type": "MongoDbAtlasCollection", "typeProperties": < "collectionName": "" >, "schema": [], "linkedServiceName": < "referenceName": "", "type": "LinkedServiceReference" > > >
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником и приемником MongoDB Atlas.
MongoDB Atlas в качестве источника
В разделе source действия копирования поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| type | Свойство type источника действия копирования должно иметь значение MongoDbAtlasSource. | Да |
| Фильтр | Задает фильтр выбора с помощью операторов запросов. Чтобы получить все документы в коллекции, не указывайте этот параметр или передайте пустой документ (<>). | No |
| cursorMethods.project | Определяет, какие поля в документах для проекции необходимо получить. Чтобы получить все поля в соответствующих документах, не указывайте этот параметр. | No |
| cursorMethods.sort | Определяет, в каком порядке запрос будет возвращать соответствующие документы. См. cursor.sort(). | No |
| cursorMethods.limit | Определяет максимальное количество документов, возвращаемых сервером. См. cursor.limit(). | No |
| cursorMethods.skip | Определяет, сколько документов нужно пропустить, прежде чем MongoDB Atlas начнет выдавать результаты. См. cursor.skip(). | No |
| batchSize | Определяет, сколько документов должно быть выдано в каждом пакете ответа от экземпляра MongoDB Atlas. В большинстве случаев изменение размера пакета не влияет на пользователя или приложение. Azure Cosmos DB ограничивает каждый пакет не может превышать 40 МБ размер, который является суммой размера пакетаSize размера документов, поэтому уменьшите это значение, если размер документа велик. | No (значение по умолчанию — 100) |
Эта служба поддерживает использование документа BSON в строгом режиме. Убедитесь в том, что запрос фильтра находится в строгом режиме, а не в режиме оболочки. Более подробное описание см. в руководстве MongoDB.
Пример:
"activities":[ < "name": "CopyFromMongoDbAtlas", "type": "Copy", "inputs": [ < "referenceName": "", "type": "DatasetReference" > ], "outputs": [ < "referenceName": "", "type": "DatasetReference" > ], "typeProperties": < "source": < "type": "MongoDbAtlasSource", "filter": ", _id: ObjectId(\"5acd7c3d0000000000000000\") >", "cursorMethods": < "project": "< _id : 1, name : 1, age: 1, datetimeData: 1 >", "sort": "< age : 1 >", "skip": 3, "limit": 3 > >, "sink": < "type": "" > > > ]
MongoDB Atlas в качестве приемника
В разделе sink действия копирования поддерживаются следующие свойства:
| Свойство | Описание: | Обязательное поле |
|---|---|---|
| type | Свойство type приемника действия копирования должно иметь значение MongoDbAtlasSink. | Да |
| writeBehavior | Описание процесса записи данных в MongoDB Atlas. Допустимые значения: insert и upsert. |
Поведение upsert — замена документа, если документ с таким значением _id уже существует. В противном случае выполняется вставка документа.
Чтобы импортировать документы JSON без изменений, см. раздел Импорт или экспорт документов JSON; чтобы копировать из данных в табличной форме, см. раздел Сопоставление схем.
Пример
"activities":[ < "name": "CopyToMongoDBAtlas", "type": "Copy", "inputs": [ < "referenceName": "", "type": "DatasetReference" > ], "outputs": [ < "referenceName": "", "type": "DatasetReference" > ], "typeProperties": < "source": < "type": "" >, "sink": < "type": "MongoDbAtlasSink", "writeBehavior": "upsert" >> > ]
Импорт и экспорт документов JSON
С помощью этого соединителя MongoDB Atlas можно легко:
- копировать документы между коллекциями MongoDB Atlas «как есть».
- импортировать документы JSON из различных источников в MongoDB Atlas, включая Azure Cosmos DB, хранилище BLOB-объектов Azure, Azure Data Lake Store или другие поддерживаемые файловые хранилища;
- экспортировать документы JSON из коллекции MongoDB Atlas в различные файловые хранилища.
Для такого независимого от схемы копирования пропустите раздел «структура» (также называемый схема) в наборе данных и сопоставление схемы в действии копирования.
Сопоставление схемы
Чтобы скопировать данные из MongoDB Atlas в табличный приемник или наоборот, см. раздел Сопоставление схем.
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.
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