MySQL Tabelleneinträge in eine MongoDB-Datenbank kopieren

26. Juni 2021 Aus Von elsenorweb

Ich pflege eine MySQL-Datenbank für die ganzen Inzidenzwerte und den offiziell der Stadt Essen gemeldeten Erkrankungen. Es soll hier ein technischer Eintrag sein, für die Definition von Erkrankungen in Sachen Corona sind andere zuständig.

Das Problem ist, dass mir jemand von LinkedIn einen Floh ins Ohr gesetzt hat, dass MySQL doch etwas für das alte Eisen sei. In typischer Manier habe ich mich erst einmal dagegen gesträubt, aber nachdem ich schon eine andere Datenbank von MySQL in MongoDB fortführe, habe ich mich nun entschlossen auch meine Coronazahlen Datenbank dort in MongoDB fortzuführen.

MongoDB ist eine NoSQL-Datenbank und damit sehr flexibel.

Das Problem war nur, die MySQL Datenbank umfasste schon über 200 Einträge, die ich nicht abtippen wollte. Ich bin auch faul :-). Das muss man als IT-Mensch sein. Nur faule IT-Techniker schaffen Automatisierung und treiben den Wohlstand in unserem Neuland weiter (es sei denn eine der neuen Regierung ab September 2021 verhindert das wieder erfolgreich – aber das ist eine andere Geschichte). Bevor ich das Attribut faul auf meine Fahnen schreiben kann, muss man doch fleißig und vor allem (bitte alle Arbeitgeber wegschauen) neugierig sein. Ja fleißig darf (muss) man sein, aber neugierig – lieber nicht, denn dann weiß der Arbeitnehmer noch zu viel und stellt noch mehr (dumme) Fragen. Es soll aber auch Arbeitgeber geben, die das ganz toll finden, wenn man mehr, mehr an technischen Wissen interessiert ist.

Lange Rede kurzer Sinn, wie man konvertiert man ganz einfach gesagt von MySQL nach MongoDB? Vorneweg ist noch kein Script, aber das werde ich wohl auch bald erstellt haben.

die MySQL-Tabellen (bwz. Datenbank)

Wichtig ist, um den nachfolgenden Befehl auszuführen, muss man in der MySQL-Datenbank drin sein.

Befehl in MySQL

2020.csv speichert nicht im Homeverzeichnis, sondern in dem Verzeichnis von der MySQL Datenbank, im Wurzelverzeichnis.

Kopieraktion

Also sich erst Root machen und dann den Befehl ins eigene Verzeichnis kopieren.

Die Datei 2020.csv ist allerdings mit Root-Privilegien ausgestattet und nicht Normaluser. Die MongoDB-Datenbank betreibe ich als Normaluser. Also die Datei allerlei Root-Rechte entziehen.

Diesen Befehl kennen wir noch von einem Script, das ich täglich anwende.
Das ist dann der Befehl des Imports in MongoDB

Ich muss ehrlich sagen, ich habe die CSV-Datei vorher noch in LibreOffice bearbeitet, nämlich noch Spaltenüberschriften gegeben.

Wichtig bevor man importiert, in MongoDB kann man je nach Vorlieben entweder per Script oder wie in meinem Fall händisch noch die Datenbank („Coronazahlen“) und die Collection („Essen“) erstellen und einen Dummywert einfügen.

Das Endresultat

IW = Inzidenzwert

Erkr = Erkrankungen

So konvertiert man von MySQL nach MongoDB, händisch. Ich weiß, es gibt da megatolle Scripte in allen möglichen Programmiersprachen. Aber was ich hier gezeigt habe, habe ich heute Morgen mal eben ausgetüfelt, vielleicht hat das ganze mit dem Suchen 60 Minuten gedauert und dann einfach ausprobiert. Mehr als eine Fehlermeldung kann nicht kommen und es gab speziell beim Import der Daten in MongoDB einige Fehlermeldungen. Bis ich das korrekt war, hat es schon 30 Minuten gedauert.

Ich wollte eigentlich vorher noch die CSV-Datei in eine JSON-Datei umwandeln, aber die Umwandlung in der PowerShell, die ich seit gestern hier in Fedora 33 installiert habe, immer nur eine Spalte herausgegeben. Zu der PowerShell kommen bestimmt noch einige Einträge und in Form von YouTube-Videos.