Man stelle sich vor, man hat Datenbankeinträge in MySQL eingeflogen und man möchte jetzt das in eine andere Datenbank importieren. Mir ist das so in den Sinn gekommen.
Als erstes sollte man sich überlegen in was für ein Dateiformat man für die Zwischenspeicherung verwenden möchte. Natürlich keine Excel-Datei, sondern universelle Formate. Ein Format ist das CSV (Comma-separted-values). CSV wird von MySQL auch ausgegeben und von MongoDB eingelesen.
Wer sich nicht sicher ist, welche Version er von MongoDB, MySQL und seinem Linux hat, der schaut nach.
Meine Ausgangsdatenbank heißt Corona und die Tabelle heißt Essen.
Man geht in die MySQL-Datenbank hinein und tippt dann den folgenden Befehl ein:
SELECT Datum, Inzidenzwert, Erkrankungen FROM Essen INTO OUTFILE '2020.csv';
Diese Datei 2020.csv wird in einem Root-Verzeichnis gespeichert. Also braucht man Root-Rechte.
Man kann natürlich jetzt alle Verzeichnisse absuchen, aber einfacher ist das mit dem Befehl:
find / -name 2020.csv
Das dauert eine kleine Weile. Die Datei findet man im Verzeichnis /var/lib/mysql/Corona/2020.csv
Um die Datei in den eigenen Ordner zu bringen, muss man diesen Befehl benutzen:
cp /var/lib/mysql/Corona/2020.csv /home/sven/Dokumente
Die Datei hat aber noch Root-Priviligen, um sie als normalen Anwender zu benutzen, wendet man diesen Befehl an:
chmod ugo+rw 2020.csv
Jetzt kann sie MongoDB lesen. Allerdings braucht die Datei noch Spaltenüberschriften, welche man dann die Datei eben schnell in einer Tabellenkalkulation erstellt. Wichtig ist, nicht vergessen, die Datei nur im .csv-Format zu speichern. Jetzt kann man sie in MongoDB importieren.
Die Datenbank muss, bevor man die CSV-Datei einfügt, existieren.
Wenn es noch keine Datenbank gibt, gibt man nach einander diese Befehle in MongoDB ein.
use Coronazahlen
db.create.Essen
Damit die Datenbank schon einmal einen Wert hat, habe ich mit folgenden Befehl schon einmal etwas eingefügt:
db.Essen.insertOne({x:1});
Jetzt kann man die Daten mit dem folgendem Befehl importieren
mongoimport -d Coronazahlen -c Essen --type CSV --file 2020.csv --headerline