如何将单列CSV文件导入含两列的数据库表?
解决CSV导入MySQL表时的列数不匹配问题
你猜的没错!这个错误就是因为你的location表有id(自增主键)和location两列,但CSV里只有单列城市数据——MySQL默认会把CSV每一行的内容对应到表的所有列,列数对不上自然就报错了。下面给你几个靠谱的解决办法:
方法1:用MySQL原生命令导入(效率最高)
直接用LOAD DATA INFILE命令,明确指定只把CSV数据导入到location列,自增的id会自动生成,不用管它。执行这段SQL就行:
LOAD DATA INFILE '/你/的/CSV文件路径/cities.csv' INTO TABLE search.location CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (location); -- 这里只指定要导入的列,id列会自动填充自增值
注意把路径换成你实际的文件路径,Windows系统的话路径里的反斜杠要改成双反斜杠\\或者正斜杠/。
方法2:图形化工具里指定列映射
如果你用的是phpMyAdmin、Navicat这类工具:
- 导入CSV的时候,找到「列映射」或者「字段匹配」的选项
- 把CSV里的唯一一列对应到表的
location列,id列直接忽略就行(工具能识别它是自增主键,会自动处理) - 确认编码、分隔符这些格式设置正确,然后启动导入
方法3:修改CSV文件(适合小文件)
如果你的CSV文件不大,可以手动给它加个表头行,第一行写上location,然后导入的时候选择「用第一行作为列名」,这样工具就会自动把数据匹配到对应的列,跳过id列。修改后的CSV大概是这样:
location 纽约 波士顿 拉斯维加斯
最后提醒下:确保CSV文件的编码是utf8,和你的表编码一致,不然可能会出现乱码哦。
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

