MongoDB-Daten importieren

MongoDBMongoDBBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labyrinth lernen Sie, wie Sie Daten in MongoDB sowohl im JSON- als auch im CSV-Format importieren. Der erste Schritt beinhaltet das Importieren von JSON-Dateien, bei dem Sie eine Beispiel-JSON-Datei erstellen und die mongoimport-Befehl verwenden, um sie in eine MongoDB-Datenbank zu importieren. Der zweite Schritt konzentriert sich auf das Importieren von CSV-Daten und führt Sie durch das Erstellen einer CSV-Datei und das Verwenden des mongoimport-Befehls, um sie in MongoDB zu laden. Das Labyrinth umfasst auch Schritte, um die Import-Ergebnisse zu überprüfen, eventuelle Fehler zu behandeln und die importierten Daten zu überprüfen, um ein umfassendes Verständnis des MongoDB-Importprozesses zu gewährleisten.

Importieren von JSON-Dateien

In diesem Schritt lernen Sie, wie Sie JSON-Dateien in MongoDB mithilfe des mongoimport-Befehls importieren. JSON (JavaScript Object Notation) ist ein beliebter Datenwechselformat, das MongoDB leicht importieren kann.

Zunächst erstellen wir eine Beispiel-JSON-Datei mit einigen Daten. Wir verwenden einen einfachen Datensatz von Büchern.

Öffnen Sie ein Terminal und navigieren Sie zum Projektverzeichnis:

cd ~/project

Erstellen Sie eine Datei namens books.json mit nano:

nano books.json

Fügen Sie den folgenden JSON-Inhalt hinzu:

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Python Programming",
    "author": "John Doe",
    "year": 2022
  },
  {
    "title": "Data Science Handbook",
    "author": "Alice Johnson",
    "year": 2021
  }
]

Speichern Sie die Datei, indem Sie Strg+X, dann Y und Enter drücken.

Starten Sie nun die MongoDB-Shell:

mongosh

Erstellen Sie eine neue Datenbank und wechseln Sie zu ihr:

use library_database

Beenden Sie die MongoDB-Shell:

exit

Importieren Sie die JSON-Datei in die books-Sammlung:

mongoimport --db library_database --collection books --file ~/project/books.json --jsonArray

Beispielausgabe:

[#######......] 2/3 documents
2023-xx-xx 00:00:00.000 [############] library_database.books 3/3 documents

Lassen Sie uns die Importierung überprüfen, indem wir mongosh verwenden, um die Anzahl der Dokumente zu zählen:

mongosh library_database --eval "db.books.countDocuments()"

Beispielausgabe:

3

Importieren von CSV-Daten

In diesem Schritt lernen Sie, wie Sie CSV (Comma-Separated Values)-Dateien in MongoDB mithilfe des mongoimport-Befehls importieren. CSV ist ein übliches Format zum Speichern tabellarischer Daten.

Zunächst erstellen wir eine Beispiel-CSV-Datei mit einigen Daten über Bibliothekmitglieder.

Navigieren Sie zum Projektverzeichnis:

cd ~/project

Erstellen Sie eine Datei namens library_members.csv mit nano:

nano library_members.csv

Fügen Sie den folgenden CSV-Inhalt hinzu:

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
Bob Williams,55,Premium,2022-03-05

Speichern Sie die Datei, indem Sie Strg+X, dann Y und Enter drücken.

Starten Sie die MongoDB-Shell:

mongosh

Erstellen Sie eine neue Datenbank und wechseln Sie zu ihr:

use library_database

Beenden Sie die MongoDB-Shell:

exit

Importieren Sie die CSV-Datei in die members-Sammlung:

mongoimport --db library_database --collection members --type csv --file ~/project/library_members.csv --headerline

Der --headerline-Flag 告诉 MongoDB,将 CSV 的第一行用作字段名。

Beispielausgabe:

[#######......] 2/4 documents
2023-xx-xx 00:00:00.000 [############] library_database.members 4/4 documents

Lassen Sie uns die Importierung überprüfen, indem wir mongosh verwenden, um die Anzahl der Dokumente zu zählen und die ersten paar Aufzeichnungen anzuzeigen:

mongosh library_database --eval "db.members.countDocuments()"

Beispielausgabe:

4

Jetzt betrachten wir die importierten Dokumente:

mongosh library_database --eval "db.members.find().limit(2)"

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'John Doe',
    age: 35,
    membership_type: 'Premium',
    join_date: '2023-01-15'
  },
  {
    _id: ObjectId("..."),
    name: 'Jane Smith',
    age: 28,
    membership_type: 'Standard',
    join_date: '2022-11-20'
  }
]

Überprüfen der Import-Ergebnisse

In diesem Schritt lernen Sie, wie Sie die Daten überprüfen und erkunden, die Sie in MongoDB importiert haben. Wir verwenden verschiedene MongoDB-Befehle, um die importierten Sammlungen und deren Inhalt zu überprüfen.

Starten Sie die MongoDB-Shell:

mongosh library_database

Zunächst listen wir alle Sammlungen in unserer Datenbank auf:

show collections

Beispielausgabe:

books
members

Jetzt untersuchen wir die Daten im Detail. Wir verwenden verschiedene Methoden, um unsere importierten Sammlungen zu überprüfen und abzufragen.

Zählen Sie die Anzahl der Dokumente in jeder Sammlung:

db.books.countDocuments()
db.members.countDocuments()

Beispielausgabe:

3
4

Finden Sie spezifische Dokumente mit Abfragefiltern:

// Finden Sie Bücher, die nach 2022 veröffentlicht wurden
db.books.find({ year: { $gt: 2022 } })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    title: 'MongoDB Basics',
    author: 'Jane Smith',
    year: 2023
  }
]

Jetzt fragen wir Mitglieder mit einem bestimmten Mitgliedschaftstyp ab:

// Finden Sie Premium-Mitglieder
db.members.find({ membership_type: "Premium" })

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    name: 'John Doe',
    age: 35,
    membership_type: 'Premium',
    join_date: '2023-01-15'
  },
  {
    _id: ObjectId("..."),
    name: 'Bob Williams',
    age: 55,
    membership_type: 'Premium',
    join_date: '2022-03-05'
  }
]

Exportieren Sie eine Sammlung, um ihren Inhalt zu überprüfen:

exit

Verwenden Sie mongoexport, um die members-Sammlung in eine JSON-Datei zu exportieren:

mongoexport --db library_database --collection members --out ~/project/exported_members.json

Zeigen Sie die exportierte Datei an:

cat ~/project/exported_members.json

Dadurch können Sie die importierten Daten außerhalb von MongoDB überprüfen.

Behandeln von Importfehlern

In diesem Schritt lernen Sie, wie Sie häufige Importfehler bei der Arbeit mit MongoDB und mongoimport behandeln. Das Verständnis dieser Fehler hilft Ihnen, Probleme bei der Datenimportierung zu beheben.

Zunächst erstellen wir eine Beispiel-Datei mit einigen Importherausforderungen:

cd ~/project

Erstellen Sie eine absichtlich problematische CSV-Datei:

nano problematic_members.csv

Fügen Sie den folgenden Inhalt hinzu:

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

Beachten Sie die absichtlichen Fehler:

  • "thirty-five" ist keine gültige Zahl
  • "invalid-date" ist kein gültiges Datumsformat

Versuchen Sie, diese Datei zu importieren:

mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline

Sie werden wahrscheinlich eine Fehlermeldung wie diese sehen:

2024-xx-xx 00:00:00.000 [#######] Failed: document validation error

Um solche Fehler zu behandeln, verwenden Sie die Flags --stopOnError und --jsonArray:

mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline --stopOnError

Erstellen Sie eine saubere Version der Datei:

nano clean_members.csv

Fügen Sie den korrigierten Inhalt hinzu:

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

Importieren Sie jetzt mit Validierung:

mongoimport --db library_database --collection clean_members --type csv --file ~/project/clean_members.csv --headerline

Überprüfen Sie den Import:

mongosh library_database --eval "db.clean_members.find()"

Zeigen wir noch einen anderen häufigen Fehler - ein falsches JSON-Format - auf:

nano invalid_books.json

Fügen Sie absichtlich fehlerhaftes JSON hinzu:

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Incomplete Book"
    // Fehlt Komma und schließende Klammer
  }
]

Versuchen Sie, diese Datei zu importieren:

mongoimport --db library_database --collection invalid_books --file ~/project/invalid_books.json --jsonArray

Sie werden einen Fehler bei der JSON-Analyse sehen.

Erstellen Sie eine gültige JSON-Datei:

nano valid_books.json

Fügen Sie das korrekte JSON hinzu:

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Complete Book",
    "author": "John Doe",
    "year": 2022
  }
]

Importieren Sie das gültige JSON:

mongoimport --db library_database --collection valid_books --file ~/project/valid_books.json --jsonArray

Überprüfen der importierten Daten

In diesem letzten Schritt lernen Sie, wie Sie die Daten, die Sie in MongoDB importiert haben, mithilfe verschiedener Techniken und Tools gründlich überprüfen und validieren.

Starten Sie die MongoDB-Shell:

mongosh library_database

Zunächst führen wir eine umfassende Datenvalidierung durch:

// Überprüfen Sie die Gesamtzahl der Sammlungen
show collections

Beispielausgabe:

books
members
clean_members
valid_books

Zählen Sie die Dokumente in jeder Sammlung:

db.books.countDocuments()
db.members.countDocuments()
db.clean_members.countDocuments()
db.valid_books.countDocuments()

Führen Sie fortgeschrittene Abfragen durch, um die Datenintegrität zu überprüfen:

// Finden Sie Bücher, die nach 2022 veröffentlicht wurden
db.books.find({ year: { $gt: 2022 } })

// Finden Sie Mitglieder, die älter als 30 sind
db.members.find({ age: { $gt: 30 } })

Beenden Sie die MongoDB-Shell:

exit

Verwenden Sie mongoexport, um Sammlungen für die externe Überprüfung zu exportieren:

## Exportieren Sie die books-Sammlung
mongoexport --db library_database --collection books --out ~/project/exported_books.json

## Exportieren Sie die members-Sammlung
mongoexport --db library_database --collection members --out ~/project/exported_members.json

Überprüfen Sie die exportierten Dateien:

## Überprüfen Sie die exportierten Bücher
head -n 5 ~/project/exported_books.json

## Überprüfen Sie die exportierten Mitglieder
head -n 5 ~/project/exported_members.json

Führen Sie eine Prüfung auf Datenkonsistenz durch:

## Vergleichen Sie die Größen der Sammlungen
wc -l ~/project/exported_books.json
wc -l ~/project/exported_members.json

Optional: Verwenden Sie jq für die JSON-Validierung:

## Installieren Sie jq, wenn es noch nicht installiert ist
sudo apt-get update
sudo apt-get install -y jq

## Validieren Sie die JSON-Struktur
jq '.' ~/project/exported_books.json
jq '.' ~/project/exported_members.json

Lassen Sie uns ein einfaches Überprüfungsskript erstellen:

nano ~/project/verify_import.sh

Fügen Sie den folgenden Inhalt hinzu:

#!/bin/bash

## Überprüfen Sie den MongoDB-Import
echo "Checking MongoDB Collections:"
mongosh library_database --quiet --eval "
    print('Books count: ' + db.books.countDocuments());
    print('Members count: ' + db.members.countDocuments());
    print('Clean Members count: ' + db.clean_members.countDocuments());
    print('Valid Books count: ' + db.valid_books.countDocuments());
"

Machen Sie das Skript ausführbar:

chmod +x ~/project/verify_import.sh

Führen Sie das Überprüfungsskript aus:

~/project/verify_import.sh

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie JSON- und CSV-Daten in MongoDB mithilfe des mongoimport-Befehls importieren. Für die JSON-Dateien haben Sie eine Beispiel-Datei books.json erstellt, in eine Datenbank library_database importiert und die Importierung durch Zählen der Dokumente überprüft. Für die CSV-Daten haben Sie eine Datei library_members.csv erstellt, in die gleiche Datenbank importiert und die Import-Ergebnisse überprüft. Sie haben auch gelernt, wie Sie Importfehler behandeln und die importierten Daten überprüfen.