在使用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. 可视化zookeeper的事务日志(转)

    前面提到,在zookeeper server的配置文件zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录,这个事务日志类似于下面这样的文件: 这个文件是一个二进制 ...

  2. 万科北京区域V-learn发布 系V-LINK产品系中首批产品

    继今年4月发布了V-LINK万科社区服务商2.0升级版本后,万科北京区域再次迎来了品牌大动作.近日,北京万科正式发布“V-LINK”产品系中的首批产品“V-learn”相关战略. 全品类教育模式 据介 ...

  3. 如何破解Adobe Acrobat9 pro?(转)

    解决办法: 1.到 C:\Program Files\Common Files\Adobe\Adobe PCD\cache 文件夹下找到 Cache.db,并删除此文件 . 2.打开Adobe Acr ...

  4. node系列2

    文件操作 NodeJS能够操作文件.小至文件查找,大至代码编译,几乎没有一个前端工具不操作文件.换个角度讲,几乎也只需要一些数据处理逻辑,再加上一些文件操作,就能够编写出大多数前端工具,本章将介绍与之 ...

  5. 集成电路中的assert和deassert应该如何翻译?

    转载自:http://m.blog.csdn.net/blog/code_robot/37663085 我每次看到电路中的assert与deassert时,总是感觉别扭,因为词典翻译总是"断 ...

  6. Zookeeper集群安装详解

    Zookeeper的角色   Zookeeper集群搭建 要求:服务器集群规模不小于3个节点,各服务器之间系统时间要保持一致! 安装步骤 1.在h1节点解压,目录改名. tar –zxvf zooke ...

  7. 100个常用的linux命令

    1,echo “aa” > test.txt 和 echo “bb” >> test.txt //>将原文件清空,并且内容写入到文件中,>>将内容放到文件的尾部 2 ...

  8. Yii框架入门教程(博客教程、权威指南、类手册)

    http://www.yiichina.com/ http://www.yiiframework.com/doc/blog/1.1/zh_cn/start.overviewhttp://www.yii ...

  9. URL参数带中文,后台接收乱码解决方案

    1.前台中文参数用encodeURIComponent()进行编码,如: var textName= encodeURIComponent(name); 2.对整个URL用encodeURI()进行编 ...

  10. Robot Framework自动化测试(二)第一个用例

    RIDE启动界面: 首先创建一个Test project File-New Project ,选择Directory类型 在创建的文件夹上右键,创建一个Test Suite Openbaidu, NE ...