我正在尝试使用LOAD DATA INFILE
将.csv文件导入 mysql。
在.csv文件中,字段用空格分隔,但在某个字段中,有多个信息用,
(逗号(分隔。
我还想解析该字段。
如何在mysql中为FIELDS TERMINATED BY
添加多种可能性的空间或逗号?
提供了我正在使用的.csv文件的示例单行:
1565067700.891 0 yyy.yyy.yyy.yyy TCP_DENIED/403 0 CONNECT tunnel://xxx.xxx.xxx.xxx/ - NONE/- - BLOCK_ADMIN_CONNECT_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-NONE-NONE <-,-,-,"-",-,4,-,-,"-",-,6.5,-,"-",-,1,"-","-",-,1,-,-,"-","-","low","-","-","-",0.00,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-> - "06/Aug/2019:11:01:40
我想解析上行中<>之间的内容以及用空格分隔的其余字段
到目前为止,我已经尝试过:
LOAD DATA LOCAL INFILE '/home/user/myfile.csv' INTO TABLE `mytable`
FIELDS TERMINATED BY ' '
LINES TERMINATED BY 'n'
(@col1, @col2, @col3)
set id=@col1, name=@col2, company=@col3;
您可以考虑对文件进行预处理,以将逗号替换为空格,以便无需任何进一步调整即可使用 LOAD DATA。由于在任何数据中似乎都不需要逗号,因此这可能就像在 Linux 上tr -s ',' ' ' < file.csv > processed.csv
一样简单。同样,您可以用逗号替换所有空格,即tr -s '[:blank:]' ',' < file.csv > processed.csv
,然后设置FIELDS TERMINATED BY ','
。