4 Stimmen

MySQL-Masseneinfügung aus CSV-Datendateien

Ich habe einige CSV-Datendateien, die ich in mySQL importieren möchte. Ich würde das Einfügen gerne in einem Shell-Skript durchführen, damit es automatisiert werden kann. Ich habe jedoch Bedenken, den Benutzernamen und das Kennwort im Klartext im Skript zu verwenden

Ich habe die folgenden Fragen:

  1. Ich fühle mich unwohl bei der Vorstellung, dass ein uname/pwd im Klartext im Skript steht (gibt es eine Möglichkeit, dies zu umgehen, oder bin ich zu paranoid)? Vielleicht kann ich einen Benutzer mit nur INSERT-Rechten für die Tabelle einrichten, die eingefügt werden soll?

  2. Die Datenbanktabelle (in die die Rohdaten importiert werden) hat einen eindeutigen Schlüssel, der auf den Tabellenspalten basiert. Es ist auch möglich, dass es in den Daten, die ich zu importieren versuche, Duplikate gibt. Anstatt dass mySQL kotzt (d.h. die gesamte Einfügung schlägt fehl), möchte ich stattdessen mySQL sagen können, dass EITHER

(a) die Zeile mit den neuen Daten zu aktualisieren OR (b) Ignorieren Sie die doppelte Zeile.

Welche Einstellung ich auch immer wähle, sie gilt für den GESAMTEN Import und nicht für jede einzelne Zeile. Gibt es irgendwelche Flags usw., die ich an mysql übergeben kann, damit es sich wie (a) ODER (b) oben verhält?

  1. Kann jemand einen Ansatzpunkt vorschlagen, wie man ein solches (Bourne-)Shell-Skript schreibt?

7voto

Bill Karwin Punkte 493880

Sie sollten lesen über mysqlimport ist ein Befehlszeilenwerkzeug, das mit MySQL geliefert wird. Dieses Tool ist der schnellste Weg, um CSV-Daten in großen Mengen zu laden.

Das Werkzeug hat zwei Optionen , --replace y --ignore um Konflikte mit doppelten Schlüsseln zu behandeln.

Aus Sicherheitsgründen und um zu vermeiden, dass das Kennwort im Klartext in das Skript eingegeben wird, können Sie auch die Option MYSQL_PWD Umweltv Variable oder die .my.cnf Datei (vergewissern Sie sich, dass es sich um eine Datei des Modus 400 oder 600 handelt). Siehe Endbenutzer-Richtlinien für Passwortsicherheit .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X