Ich habe eine CSV-Datei, die 10 Spalten enthält. Ich möchte nur einige Spalten aus dieser Datei auswählen und sie mit dem LOAD DATA INFILE
Befehl in eine MySQL-Datenbank laden .
83
Laden Sie Daten in eine Tabelle in MySQL und geben Sie Spalten an:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;
@ col1,2,3,4 sind Variablen, die den Namen der CSV-Dateispalten enthalten (angenommen 4), ID sind Tabellenspalten.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
.for i in range(1,100): print("@column",i,",",end="",sep="")
LOAD DATA INFILE 'file.csv' INTO TABLE t1 (column1, @dummy, column2, @dummy, column3, ...) FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n';
Ersetzen Sie einfach die Spalte1, Spalte2 usw. durch Ihre Spaltennamen und setzen Sie @dummy an eine Stelle, an der sich eine Spalte in der CSV befindet, die Sie ignorieren möchten.
Alle Details hier .
quelle
(field,names)
kurz vor das Semikolon am Ende setzen, damit es funktioniert.Geben Sie den Namen der Spalten in der CSV in der Anweisung load data infile an.
Der Code lautet wie folgt:
LOAD DATA INFILE '/path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (column_name3, column_name5);
Hier fügen Sie der Tabelle nur Daten zu zwei Spalten hinzu (Sie können sie mit dem Namen der Spalte auswählen).
Das einzige, worauf Sie achten müssen, ist, dass Sie eine CSV-Datei (Dateiname.csv) mit zwei Werten pro Zeile (Zeile) haben. Ansonsten bitte erwähnen. Ich habe eine andere Lösung.
Vielen Dank.
quelle
Beispiel:
Inhalt der ae.csv-Datei:
CREATE TABLE Tabletmp ( rec VARCHAR(9) );
Für nur Spalte 3 setzen:
LOAD DATA INFILE '/local/ae.csv' INTO TABLE Tabletmp FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 2 LINES (@col1, @col2, @col3, @col4, @col5) set rec = @col3; select * from Tabletmp; 2016 1982 1986 1400
quelle
Wenn Ihre Datenbanktabelle mehr Spalten enthält als mehr Spalten in Ihrer CSV, können Sie folgendermaßen vorgehen:
LOAD DATA LOCAL INFILE 'pathOfFile.csv' INTO TABLE youTable CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' (yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);
quelle
Für diejenigen, die folgenden Fehler haben:
Sie können diesen Befehl einfach ausführen, um zu sehen, aus welchem Ordner Dateien geladen werden können:
SHOW VARIABLES LIKE "secure_file_priv";
Danach müssen Sie die Dateien in diesen Ordner kopieren und die Abfrage mit
LOAD DATA LOCAL INFILE
statt ausführenLOAD DATA INFILE
.quelle