2016-04-03 45 views
2

这是CSV数据的样子:Mysql的CSV导入 - 与最后一个字段的问题

"COUNTRY_ALPHA2_CODE","COUNTRY_NUMERIC_CODE","COUNTRY_NAME","REGION_CODE","REGION_NAME" 
"AD","020","Andorra","02","Canillo" 
"AD","020","Andorra","03","Encamp" 
"AD","020","Andorra","04","La Massana" 
"AD","020","Andorra","05","Ordino" 

当我尝试使用下面的代码导入它:

LOAD DATA LOCAL INFILE 'COUNTRIES.CSV' 
INTO TABLE countries 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; 
select * from countries; 

我得到很奇怪的行为最后一个字段,就好像它正在寻找最后一个字段有一个逗号。

+-------------------------+---------------------+---------------------+----------------------+ 
| COUNTRY_NAME   | COUNTRY_ALPHA2_CODE | COUNTRY_ALPHA3_CODE | COUNTRY_NUMERIC_CODE | 
+-------------------------+---------------------+---------------------+----------------------+ 
| Afghanistan    | AF     | AFG     | 004" 
"Ant   | 
| Anguilla    | AI     | AIA     | 660" 
"Alb   | 
| Aland Islands   | AX     | ALA     | 248" 
"Aze   | 
| Andorra  

我看了一下CSV导入的例子,数据似乎是最后没有逗号的相同格式。不知道如何告诉mysql最后一个字段不会有逗号。

+0

尝试没有'ESCAPED BY '“'' – Yazan

+1

这是解决方案的一部分,请参阅下文。谢谢! – NicB

回答

0

OK,与 “按终止线” 玩弄与 “逃脱” 去掉奏效了:

LOAD DATA LOCAL INFILE 'COUNTRIES.CSV' 
INTO TABLE countries 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES; 

返回

+-----------------+---------------------+---------------------+----------------------+ 
| COUNTRY_NAME | COUNTRY_ALPHA2_CODE | COUNTRY_ALPHA3_CODE | COUNTRY_NUMERIC_CODE | 
+-----------------+---------------------+---------------------+----------------------+ 
| Aruba   | AW     | ABW     | 533     | 
| Afghanistan  | AF     | AFG     | 004     | 
| Angola   | AO     | AGO     | 024     | 
| Anguilla  | AI     | AIA     | 660     |