2016-08-01 49 views
0

Neu in SQL und versuchen, in eine CSV-Datei in meine Datentabelle laden, wo die Spalten in der CSV nicht übereinstimmen mit der gleichen Reihenfolge in der Tabelle. Auch gibt es keine PK in der CSV-MySQL Zuordnung csv Felder zu bestimmten Feldern in Datentabelle

zu veranschaulichen, das ist ein Ausschnitt aus meiner CSV und SQL-Tabelle

csv1, csv2, csv3, csv4 ...

sql1 (PK), sql2, sql3, sql4, sql5 ...

die Last wie diese gehen muss

csv1 -> sql2 
csv2 -> sql3 
csv3 -> sql4 

gibt es eine andere Art und Weise außer mit dem folgenden zu erreichen, was ich will

load data local infile 'xxx' 
into table tbl_x 
fields terminated by ',' 
lines terminated by '\r\n' 
ignore 4 lines 
(@csv1,@csv2,@csv3,@csv4) 
set 
sql2 = @csv1, 
sql3 = @csv2, 
sql4 = @csv3; 
+0

Ist 'sql1' eine Spalte mit automatischer Erhöhung? –

+0

ja ist es, also sollte es füllen, wie Zeilen hinzugefügt werden – Samuel

Antwort

0

Sie können Ihre CSV-Daten einfach in eine temporäre Tabelle laden und diese Daten in die gewünschte Zieltabelle einfügen.

LOAD DATA LOCAL INFILE 'xxx' 
INTO TABLE tbl_temp 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
IGNORE 4 LINES 

Dann INSERT INTO ... SELECT verwenden tbl_x zu füllen:

INSERT INTO tbl_x (sql1, sql2, sql3, ...) 
SELECT NULL, csv1, csv2, ... 
FROM tbl_temp 

von NULL in Ihre Primärschlüsselspalte einfügen, MySQL sollte Autoinkrement dieser Spalte.