如何使用LOAD DATA INFILE将CSV文件中的选定列插入MySQL数据库

我有一个包含10列的CSV文件。 我只想从该文件中select一些列,并使用LOAD DATA INFILE命令将它们加载到MySQL数据库中。

将数据加载到MySQL中的表中并指定列:

 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是variables来保存csv文件的列(假设是4)name,id是表列。

 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'; 

只需将列1,列2等replace为列名称,然后将@dummyreplace为要忽略的CSV列。

全部细节在这里 。

在加载数据infile语句中指定CSV中列的名称。

代码是这样的:

 LOAD DATA INFILE '/path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (column_name3, column_name5); 

在这里,您只需要将数据添加到表格中的两列(您可以select列的名称)。

唯一要注意的是你有一个CSV文件(filename.csv),每行(行)有两个值。 否则请提及。 我有一个不同的解决scheme。

谢谢。

例:

ae.csv文件的内容:

 "Date, xpto 14" "code","number","year","C" "blab","15885","2016","Y" "aeea","15883","1982","E" "xpto","15884","1986","B" "jrgg","15885","1400","A" 
 CREATE TABLE Tabletmp ( rec VARCHAR(9) ); 

仅用于放置第3列:

 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