首页 > 解决方案 > 将 csv 文件导入 mysql 服务器,但仅插入第一行并且输入错误

问题描述

目标:我必须将 CSV 文件导入 MySQL 服务器
问题:只插入第一行,并且输入错误。

我的 csv 文件的共振峰是:

lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b
lifelock,LifeLock,,web,Tempe,AZ,1-Oct-06,6000000,USD,a
lifelock,LifeLock,,web,Tempe,AZ,1-Jan-08,25000000,USD,c
mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed
flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a

查询创建sql表:

create table fund(permalink varchar(20), company varchar(20), numEmps int, category varchar(15),
city varchar(20),state varchar(15),fundedDate Date,raisedAmt int, raisedCurrency longtext,round longtext);

查询导入 csv 文件:

load data infile '/var/lib/mysql-files/TechCrunchcontinentalUSA.csv' into table fund fields terminated by ',' 
lines terminated by '\n' (permalink, company, @numEmps , category , city ,state, @funded, @raised, raisedCurrency ,round )
set numEmps=cast(@emps as unsigned), raisedAmt = cast(@raised as unsigned), fundedDate =STR_TO_DATE(@funded, '%d-%b-%Y') ;

输出图像 在此处输入图像描述

标签: mysql

解决方案


你的主键设置为AUTO_INCREMENT?此外,检查您的 csv 文件是否有每行的换行符分隔符。有时,csv 列数据可能太大而无法放入您定义的 db 列中,例如您正在定义 city 列以保存值,varchar(20)但在 csv 文件中,您有一个 city 超过 20 个字符的实例。

您始终可以使用在线工具验证您的 csv(确保您没有任何敏感数据,因为它是第三方工具)

或者,如果您的 csv 文件和表名相同,也可以尝试此操作:

mysqlimport --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local db_name TechCrunchcontinentalUSA.csv

-uroot -proot如果您有一个设置,请提供用户名和密码标志。


推荐阅读