写完之前百万数据导入的总结后,最近还真经常遇到需要把百万数据导入MySQL,就用最快的Load Data Infile这个方法导入,但是今天遇到了要导入的数据里面含有日期类型,如果还是按之前写法导入就出现了如下异常的日期格式👇:
这是怎么回事呢?掌柜再次翻阅全网,发现造成这样的原因有很多,其中主要原因是因为插入的数据不合规。比如插入数据长度超出该字段的设置值、无效字符、插入数据的格式不对等。后来掌柜经过一番排查后发现,我这里出错的原因是因为插入的格式不符合MySQL默认的日期格式导致的。
那么解决的办法就有了,就是使用LOAD DATA INFILE导入数据的时候设置要导入的变量,用DATE_FORMAT函数来指定时间格式如下:
然后再次查询可以发现,日期列都正确了:
可以跟要之前要导入的表格比较,日期数据是一样的!
撒花🎉又解决了一个小bug😁。
PS: 不知道有没有朋友注意到掌柜在写LOAD DATA INFILE导入数据的语句的时候(用小蓝色框住那里),第三行ENCLOSED BY 这里用的是双引号括住了单引号("’",为了方便大家理解,掌柜这里在中间加入了空格,实际写的时候是没有的)!!!之所以这么写是为了去除导入数据里面的单引号,如果还是按照之前的单引号括住双引号这样👉’"’,就会出现导入的数据依然含有单引号的情况,这个小细节需要注意一下。
可以看看这两个图对比👆👇:
参考资料:
关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题
MySQL官方文档1
MySQL官方文档2