Обработка ошибок импорта
В этом шаге вы научитесь обрабатывать общие ошибки импорта при работе с MongoDB и mongoimport
. Понимание этих ошибок поможет вам устранять проблемы при импорте данных.
Сначала создадим примерный файл с некоторыми проблемами при импорте:
cd ~/project
Создадим намеренно проблемный CSV-файл:
nano problematic_members.csv
Добавим следующее содержимое:
name,age,membership_type,join_date
John Doe,thirty-five,Premium,2023-01-15
Jane Smith,28,Standard,invalid-date
Alice Johnson,42,Gold,2021-06-10
Заметим намеренные ошибки:
- "thirty-five" не является допустимым числом
- "invalid-date" не имеет правильного формата даты
Попробуем импортировать этот файл:
mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline
Вероятно, вы увидите сообщение об ошибке, похожее на это:
2024-xx-xx 00:00:00.000 [#######] Failed: document validation error
Для обработки таких ошибок используйте флаги --stopOnError
и --jsonArray
:
mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline --stopOnError
Создадим чистую версию файла:
nano clean_members.csv
Добавим исправленное содержимое:
name,age,membership_type,join_date
John Doe,35,Premium,2023-01-15
Jane Smith,28,Standard,2022-11-20
Alice Johnson,42,Gold,2021-06-10
Теперь импортируем с проверкой:
mongoimport --db library_database --collection clean_members --type csv --file ~/project/clean_members.csv --headerline
Проверим импорт:
mongosh library_database --eval "db.clean_members.find()"
Давайте покажем еще одну общую ошибку — неправильный формат JSON:
nano invalid_books.json
Добавим намеренно неправильный JSON:
[
{
"title": "MongoDB Basics",
"author": "Jane Smith",
"year": 2023
},
{
"title": "Incomplete Book"
// Отсутствует запятая и закрывающая фигурная скобка
}
]
Попробуем импортировать этот файл:
mongoimport --db library_database --collection invalid_books --file ~/project/invalid_books.json --jsonArray
Вы увидите ошибку при разборе JSON.
Создадим правильный JSON-файл:
nano valid_books.json
Добавим правильный JSON:
[
{
"title": "MongoDB Basics",
"author": "Jane Smith",
"year": 2023
},
{
"title": "Complete Book",
"author": "John Doe",
"year": 2022
}
]
Импортируем правильный JSON:
mongoimport --db library_database --collection valid_books --file ~/project/valid_books.json --jsonArray