在使用MySQL时,常常会用到Load Data Infile来导入数据,在遇到Date类型的列时,有时会遇到格式转换的问题:

首先创建一张简单的people表,包含名字,生日,年龄三个字段:
mysql> create table people(
    -> name varchar(10) NOT NULL,
    -> birthday date NOT NULL,
    -> age int NOT NULL);
Query OK, 0 rows affected (0.18 sec)
构造两个测试文件,导入到people表中,如下图:
可以看到两个文件仅有生日的格式不同,我们对两个文件分别用load data local infile进行导入测试,结果如下:


可以看到test1.txt中的形如%Y-%m-%d格式的日期可以被正确导入,而test2.txt中的形如%m/%d/%Y格式的日期无法被正确导入,提示数据被截断。
 
检查一下与date有关的系统变量如下:

发现mysql中date_format的默认值是%Y-%m-%d,尝试修改该变量的值,返回如下错误:
mysql> set date_format='%m/%d/%Y';
ERROR 1238 (HY000): Variable 'date_format' is a read only variable
那么我们直接在配置文件my.ini中设置该值,重启mysql服务,成功修改了date_format的值:

重新导入test2.txt,本以为可以正常导入,结果却和原来一样,连显示格式都没有变:
mysql> select * from people;
+------+------------+-----+
| name | birthday   | age |
+------+------------+-----+
| Lily | 0000-00-00 |  25 |
| Lucy | 0000-00-00 |  23 |
+------+------------+-----+
2 rows in set (0.00 sec)

百度一下据说这个变量已经被mysql抛弃了…………

 
那么问题来了,如何正确导入非默认格式的date数据呢?
尝试了一下大概有三个办法:
1.使用编辑软件将csv文件中的日期格式转换成mysql默认的日期格式,然后再导入;
2.使用某些第三方软件进行导入,如navicat,自带日期格式转换功能;
3.在load data local infile语句中使用STR_TO_DATE函数进行转换:
个人推荐使用第三种方法,实际测试命令行下导入数据比通过客户端软件导入速度快太多了。

关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题的更多相关文章

  1. mysql中使用load data infile导入数据的用法

    有时需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用mysql load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. LO ...

  2. 合理使用mysql中的load data infile导入数据

    基本语法: load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]into table tbl_name ...

  3. 解决ubuntu server mysql load data infile 导入本地文件ERROR 1148 (42000)错误。

    问题:在ubuntu server 上使用apt-get 安装完 mysql 使用 load data infile 出现错误,错误代码如下: ERROR (): The used command i ...

  4. Mysql load data infile 导入数据出现:Data truncated for column

    [1]Mysql load data infile 导入数据出现:Data truncated for column .... 可能原因分析: (1)数据库表对应字段类型长度不够或修改为其他数据类型( ...

  5. LOAD DATA INFILE读取CSV中一千万条数据至mysql

    作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

  6. MySQL LOAD DATA INFILE—批量从文件(csv、txt)导入数据

    最近做的项目,有个需求(从Elastic Search取数据,业务运算后),每次要向MySQL插入1300万数据左右.最初用MySQL的executemany()一次插入10000条数据,统计的时间如 ...

  7. python导入csv文件时,出现SyntaxError

    背景 np.loadtxt()用于从文本加载数据. 文本文件中的每一行必须含有相同的数据. *** loadtxt(fname, dtype=<class 'float'>, commen ...

  8. 解决Gephi导入csv文件时提示“边表格需要一个包含节点标号‘源’和‘目标’列” 问题的两个方案

    1.将csv文件在Excel中打开,并重新保存为csv. 2.将csv文件导入到sqlite,使用sqlite作为数据来源. 标准格式如下

  9. 当用命令导入csv文件时提示错误[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

        安装之后没有my.ini配置文件怎么办,因为自己安装的是zip压缩版的mysql,所以再5.7之后就没有my.ini配置文件,所以有时候需要去自己创建一个叫my.ini的配置文件,但是特别 要 ...

随机推荐

  1. HDU5649 DZY Loves Sorting 线段树

    题意:BC 76 div1 1004 有中文题面 然后奉上官方题解: 这是一道良心的基础数据结构题. 我们二分a[k]的值,假设当前是mid,然后把大于mid的数字标为1,不大于mid的数字标为0.然 ...

  2. [Raobin] Ext.net在前端直接将对象转为json形式传入后台

    d.Render.ExtraParams.Add(Html.Y().Parameter("Json", new JavaScriptSerializer().Serialize(e ...

  3. 用java api读取HDFS文件

    import java.io.IOException; import java.io.InputStream; import java.security.PrivilegedExceptionActi ...

  4. 【原创】Mac上编译Hadoop1.0.3出现的一些问题

    create-native-configure: [exec] configure.ac:47: error: possibly undefined macro: AC_PROG_LIBTOOL [e ...

  5. HW2.21

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  6. jsp 相关特性

    下面要注意一个问题,“只要浏览器关闭,session就消失”,那么这个论断是否正确呢?对于session除非程序通知服务器删除一个 session,否则服务器会一直保留,程序一般都是在用户做log o ...

  7. hibernate三级缓存介绍

    hibernate缓存机制:分为三种:1.一级缓存(session级别缓存,同一session中不会重复发出sql,默认会实现)2.二级缓存(跨session的缓存,不同session会从同一缓存中取 ...

  8. 51nod1009(1的数目)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009 题意:中文题诶- 思路:分别考虑各个数位上出现1的次数 ...

  9. UEFI引导修复教程和工具

    参考 http://bbs.wuyou.com/forum.php?mod=viewthread&tid=323759 1. MBR分区表:Master Boot Record,即硬盘主引导记 ...

  10. ios8 关于UIAlertController 代替UIActionsheet

    self.alertController=[UIAlertController alertControllerWithTitle:@"请选择\n\n\n\n\n\n\n\n\n\n\n\n\ ...