zoukankan      html  css  js  c++  java
  • 关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题

    在使用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表中,如下图:
    关于MySQL中使用LOAD <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    可以看到两个文件仅有生日的格式不同,我们对两个文件分别用load data local infile进行导入测试,结果如下:
    关于MySQL中使用LOAD <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    关于MySQL中使用LOAD <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    可以看到test1.txt中的形如%Y-%m-%d格式的日期可以被正确导入,而test2.txt中的形如%m/%d/%Y格式的日期无法被正确导入,提示数据被截断。
     
    检查一下与date有关的系统变量如下:
    关于MySQL中使用LOAD <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    发现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的值:
    关于MySQL中使用LOAD <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    重新导入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 <wbr>DATA <wbr>INFILE导入csv文件时的日期格式问题
    个人推荐使用第三种方法,实际测试命令行下导入数据比通过客户端软件导入速度快太多了。
  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/jukan/p/5180859.html
Copyright © 2011-2022 走看看