在使用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. xampp 访问出现New XAMPP security concept 或者 新しいXAMPPのセキュリティコンセプト

    出现如下错误: 新しいXAMPPのセキュリティコンセプト: は.要求されたオブジェクトへのアクセスは.ローカルネットワークから入手可能です. この設定は.ファイル"で設定することができますの ...

  2. Set up your first C# test with NUnit or resharper

    此链接为一种方式,用Nunit单元测试驱动测试代码 http://relevantcodes.com/using-nunit-to-execute-selenium-webdriver-tests/ ...

  3. AABB碰撞盒

    矩形边界框(转) 另一种常见的用来界定物体的几何图元是矩形边界框,矩形边界框可以是与轴对齐的或是任意方向的.轴对齐矩形边界框有一个限制,就是它的边必须垂直于坐标轴.缩写AABB常用来表示axially ...

  4. getchar

    getchar函数每次只从缓冲区中接受一个字符. getchar有一个int型的返回值. 当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字 ...

  5. Yii防注入攻击笔记

    网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许:对于内容复杂表单的内容,应该对html和script ...

  6. fileupload控件上传、文件下载

    常遇到上传下载的功能,这里把我习惯的用法写下来: 上传: string fileName = "";fileName = this.fu_pic.FileName;if (stri ...

  7. fcntl记录锁实例

    fcntl 函数是一个相当常用的对文件进行加锁操作的函数. 文件锁包括强制锁.建议锁.记录锁, 不过一般系统和内核都是用的强制锁. 以下为记录锁的例子:------------------------ ...

  8. 1513:二进制中1的个数 @jobdu

    题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: ...

  9. httpClient实现获取网络信息

    自己实现的抓取网络信息 package util; import java.io.IOException; import java.lang.reflect.Field; import java.ma ...

  10. ibm rational software architect download

    keep secret: rational software architect download: http://public.dhe.ibm.com/software/rationalsdp/v8 ...