解决MySQL中使用Load Data Infile时只能导入一半的数据
今天在使用MySQL的LOAD DATA INFILE成功导入数据后发现,原本10w条数据只导入了5w条数据,一条不多,一条不少(还刚好都是单数)。。。
SQL语句如下:
- LOAD DATA LOCAL INFILE 'D:/milliondatatest/userinfo.csv'
- INTO TABLE userinfo CHARACTER SET UTF8
- FIELDS TERMINATED by ','
- OPTIONALLY ENCLOSED by '"'
- LINES TERMINATED by '
'
- (uid,uname,uphone,uaddress)
数据添加后数据库如图:
头皮发麻,然后又去仔细查看了一下MySQL的api文档。
原因是因为所用到的数据文件,换行用的是 ,而LOAD DATA INFILE默认的换行符为 。
在导入语句中加入LINE TERMINATED BY ' ' 或 ' ' 改为 ' ' 即可解决问题
LINE TERMINATED BY '
'
' '是回车,前者使光标到行首,(carriage return)
' '是换行,后者使光标下移一格,(line feed)
修改后的SQL如下:
执行结果:
出现这些问题的根本原因还是因为对mysql的规则不熟悉。不过问题总是需要我们一步步解决的,失败乃成功之母;遇到的错误多了,未来的路就会更加顺畅。
解决MySQL中使用Load Data Infile时无法导入中文
如有错误,欢迎指正
Thanks
推荐阅读