我有一个包含10列的CSV文件.我想只从该文件中选择一些列,并使用该LOAD DATA INFILE命令将它们加载到MySQL数据库中.
ArK*_*ArK 105
将数据加载到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 ;
Run Code Online (Sandbox Code Playgroud)
@ col1,2,3,4是保存csv文件列的变量(假设4)name,id是表列.
Mar*_*c B 39
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';
Run Code Online (Sandbox Code Playgroud)
只需将column1,column2等替换为您的列名,然后将@dummy放在CSV中您要忽略的列中.
详情请点击此处.
Ata*_*sef 27
在load data infile语句中指定CSV中的列名称.
代码是这样的:
LOAD DATA INFILE '/path/filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(column_name3, column_name5);
Run Code Online (Sandbox Code Playgroud)
在这里,您只需将数据添加到表中的两列(您可以使用列的名称选择它们).
您唯一需要注意的是,您有一个CSV文件(filename.csv),每行(行)有两个值.否则请提.我有一个不同的解决方案.
谢谢.
例:
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"
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE Tabletmp (
rec VARCHAR(9)
);
Run Code Online (Sandbox Code Playgroud)
仅适用于第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
Run Code Online (Sandbox Code Playgroud)