在使用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. python获取当前路径几种方式

    __python中操作路径,最好用绝对路径.__这样会避免在多个脚本调用过程中或不同层级调用过程中出现混乱 os.getcwd() sys.argv[0] or sys.path[0] __file_ ...

  2. ORM Entities vs. Domain Entities under Entity Framework 6.0

    I stumbled upon the following two articles First and Second in which the author states in summary th ...

  3. gcc编译选项的循环重复查找依赖库等命令

    link时,若liba.a依赖libb.a,若这样写 -lb -la,则链接通不过,gcc有个选项:-Xlinker ,可以让gcc在链接时反复查找依赖库,用法 : gcc -shared -o li ...

  4. puppet运维配置实列

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABQkAAAGBCAIAAABKMKAEAAAgAElEQVR4nOydeXwU9cH/t2o9WutR+7

  5. Linux内存寻址之分页机制

    在上一篇文章Linux内存寻址之分段机制中,我们了解逻辑地址通过分段机制转换为线性地址的过程.下面,我们就来看看更加重要和复杂的分页机制. 分页机制在段机制之后进行,以完成线性—物理地址的转换过程.段 ...

  6. hdu 2711&&poj2182 Lost Cows (线段树)

    从后往前查第一个为0的奶牛肯定应该排在第一个.每次从后往前找到第一个为0的数,这个数应该插在第j位.查找之后,修改节点的值为极大值,当整棵树的最小值不为0的时候查找结束. 至于这种查找修改的操作,再没 ...

  7. [四]JFreeChart实践三之饼图

    饼图pie 原理总结 1.准备好要显示的数据放入dataset 2.调用ChartFactory将dataset作为参数传递进去,生成chart 3.掉Servlet工具类将chart作为参数传入生成 ...

  8. 使用tomcat的jndi方式连接mysql的字符编码设置

    最近新项目使用tomcat中配置jndi连接mysql的方式,在使用过程中发现查询条件为中文的时候查询不出结果,经过一通折腾,发现是jndi在连接数据库的时候忘记设置字符编码. 修改之后的完整配置如下 ...

  9. HTML几类标签的应用总结

    打开DREAMWEAVER,新建HTML,如下图: body的属性: bgcolor 页面背景色 background  背景壁纸.图片 text  文字颜色 topmargin  上边距 leftm ...

  10. 在DDMS中访问data目录

    转自 http://blog.csdn.net/catoop/article/details/7584746 由于某些原因,需要通过eclipse访问/data/下的文件. 打开eclipse-DDM ...