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"
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下代码导入它时:
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;
Run Code Online (Sandbox Code Playgroud)
我在最后一个字段上得到了非常奇怪的行为,就好像它正在寻找最后一个有逗号的字段一样。
+-------------------------+---------------------+---------------------+----------------------+
| 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
Run Code Online (Sandbox Code Playgroud)
我查看了 CSV 导入的示例,数据似乎采用相同的格式,末尾没有逗号。不知道如何告诉 mysql 最后一个字段不会有逗号。
好的,尝试使用“行终止于”并删除“转义于”就可以了:
LOAD DATA LOCAL INFILE 'COUNTRIES.CSV'
INTO TABLE countries
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Run Code Online (Sandbox Code Playgroud)
退货
+-----------------+---------------------+---------------------+----------------------+
| 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 |
Run Code Online (Sandbox Code Playgroud)