【问题标题】:MySQL: Importing csv into table with quotation marksMySQL:将csv导入带引号的表中
【发布时间】:2019-06-13 03:02:32
【问题描述】:
我有一个 csv,其中每一行都以引号开头,也以引号结尾。将csv加载到表格时如何忽略行首和行尾的引号?
LOAD DATA LOCAL INFILE '/path/data.csv'
INTO TABLE test1
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\"\n'
IGNORE 1 ROWS;
我试过了
OPTIONALLY ENCLOSED BY '"'
但这指的是每个特定的字段,而不是整行。
【问题讨论】:
标签:
mysql
sql
csv
sql-insert
load-data-infile
【解决方案1】:
正如Shadow 和Barmar 所说,答案在于the documentation:
如果所有输入行都有一个您想忽略的公共前缀,您可以使用 LINES STARTING BY 'prefix_string' 跳过前缀及其之前的任何内容。如果一行不包含前缀,则跳过整行。 [...] FIELDS TERMINATED BY、LINES STARTING BY 和 LINES TERMINATED BY 值可以超过一个字符。
因此,使用:
LOAD DATA LOCAL INFILE '/path/data.csv'
INTO TABLE test1
FIELDS TERMINATED BY ';'
LINES STARTING BY '"'
LINES TERMINATED BY '"\n'
IGNORE 1 ROWS;