如何使用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