MySQL LOAD DATA INFILE - add columns and delete duplicates
ebody
- datenbank
- mysql
Hallo,
ich möchte eine CSV in eine MySQL Datenbank importieren mit MySQL. Ich möchte aus der CSV nur Datensätze importieren die keine Duplikate enthalten. Dabei möchte ich 4 Spalten verwenden, deren Werte bzgl. Duplikate relevant sind. Also ähnlich, wie man es in Excel macht, wenn man Duplikate entfernt und dort die Spalten für auswählt.
Diese 4 Spalten müssen beim Import aber erst erstellt werden. Deren Werte werden aus den Werten der schon in der CSV vorhandenen Spalten berechnet.
Hier wird gezeigt, wie man eine zusätzliche Spalte einfügt: http://stackoverflow.com/questions/22868443/add-extra-column-of-data-when-using-load-data-local-infile
Aber wie kann man jetzt die Daten ohne die Duplikate importieren?
Gruß ebody
Tach!
Aber wie kann man jetzt die Daten ohne die Duplikate importieren?
Nun, wenn LOAD DATA INFILE keine entsprechende Syntax dazu hat, dann wird es wohl nicht damit gehen. Zu testen wäre da lediglich, ob der Import abgebrochen wird oder weiterläuft. Bei letzterem wäre dein Problem ja gelöst, bei erstem braucht es eine alternative Vorgehensweise. Zum Beispiel erstmal in eine temporäre Tabelle einlesen und diese dann in die eigentliche Tabelle einfüllen. Bei INSERT ... SELECT gibt es jedenfalls die Möglichkeit des ON DUPLICATE KEY UPDATE.
dedlfix.
Tach!
Aber wie kann man jetzt die Daten ohne die Duplikate importieren?
Nun, wenn LOAD DATA INFILE keine entsprechende Syntax dazu hat, dann wird es wohl nicht damit gehen. Zu testen wäre da lediglich, ob der Import abgebrochen wird oder weiterläuft. Bei letzterem wäre dein Problem ja gelöst, bei erstem braucht es eine alternative Vorgehensweise. Zum Beispiel erstmal in eine temporäre Tabelle einlesen und diese dann in die eigentliche Tabelle einfüllen. Bei INSERT ... SELECT gibt es jedenfalls die Möglichkeit des ON DUPLICATE KEY UPDATE.
dedlfix.
Danke für die Antwort.
Gruß ebody