此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA INFILE, 30多秒就能够完成二三百万的数据量导入。

LOAD DATA INFILE 命令允许你读取文本文件然后非常快速的插入数据库。

导入文件之前,你需要准备以下的内容:

  • 创建相应数据的数据库表格。
  • CSV 文件中的数据需要和数据库表格在列数和数据类型保持一致。
  • 具有写入数据库的文件和插入权限的账户

假定我们拥有一个 discounts 的表格,结构如下:

我们使用 [CREATE TABLE statement][1]命令创建 discounts 表格:

CREATE TABLE discounts (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
expired_date DATE NOT NULL,
amount DECIMAL(10 , 2 ) NULL,
PRIMARY KEY (id)
);

discounts.csv 文件的首行作为列名称,其他三行为数据。

以下的命令使得 c:\tmp\discounts.csv 的文件存入 discounts表格。

LOAD DATA INFILE 'c:/tmp/discounts.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

文件中的数据阈由逗号分隔开,代码中反映为 FIELD TERMINATED BY ',' ,而且数据由双引号包围,通过 ENCLOSED BY '" ‘ 标明

CSV 中的换行标记由 LINES TERMINATED BY '\n' 进行说明。

另外:文件中的首行是标题并需要存入数据库表格中,因此通过IGNORE 1 ROWS进行忽略。

导入数据转换格式


有时数据的格式并不满足数据库表格中目标列的格式。简单的情况下,你可以在LOAD DATA INFILE 中设置 set 选项 以转换数据

假定 discount_2.csv 文件中的过期时间列 是mm/dd/yyyy 的格式。

当向 discounts 表格中导入数据时,我们必须通过 str_to_date() function 转换成MySQL日期的格式

LOAD DATA INFILE 'c:/tmp/discounts_2.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(title,@expired_date,amount)
SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');

客户端向远程MySQL数据库导入数据


使用命令 LOAD DATA INFILE从客户端(本地电脑)向远程MySQL数据库导入数据是完全可行的。

当你使用LOAD DATA INFILE 中的LOCAL 选项,客户端程序读取本地的文件,然后将其发送到MySQL server。文件将被上传到服务器端相应的临时目录内,比如 Windows 中 C:\windows\temp 或 linux中 /temp 。

此文件夹无法被MySQL配置或占用。

我们看看下面的例子:

LOAD DATA LOCAL INFILE  'c:/tmp/discounts.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

唯一的差别在于命令中的 LOCAL 选项。如果你需要load 一个大的CSV文件,你会注意到LOCAL 选项,它会比平时慢一些,因为更多时间浪费在数据传输上面。

当你使用 LOCAL 选项时,连接 MySQL server的账户并不需要文件权限来导入数据。

使用 LOAD DATA LOCAL 导入本地文件到远程 MySQL服务端,需要注意一些安全问题,你必须意识到这些问题以规避潜在的安全风险。

此文章转载自:http://www.mysqltutorial.org/import-csv-file-mysql-table/

【MySQL】CSV 文件导入MySQL的更多相关文章

  1. [转]csv文件导入Mysql

    本文转自:https://blog.csdn.net/quiet_girl/article/details/71436108 本篇博客主要讲将csv文件导入Mysql的方法(使用命令行). Step1 ...

  2. MySql csv文件导入导出

    一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...

  3. 使用pandas导入csv文件到MySQL

    之前尝试过用命令行来解决csv文件导入到MySQL这个问题,没想到一直没有成功.之后会继续更新的吧,现在先用pandas来解决这个问题,虽然会复杂一点,但至少能用. 例子是导入movielens的ra ...

  4. csv文件导入到mysql

    如何将csv文件导入到mysql数据库呢,方法有很多但最简单粗暴的方法还是用sql语句啦,像下面这样. LOAD DATA LOCAL INFILE 'csv文件路径' INTO TABLE 数据表名 ...

  5. CSV文件导入导出MySQL

    使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...

  6. csv批量导入mysql命令

    今天把从Kaggle上下载下来的csv数据导入mysql,想做个统计分析,怎奈csv文件有些大.所以仅仅能用mysql 命令导入,现mark下,以备以后不时之需: 1. 导入: 基本的语法: load ...

  7. 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

    参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...

  8. SQL Server:把CSV文件导入到SQL Server表中

    有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候. 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Ser ...

  9. 把CSV文件导入到SQL Server表中

    保存数据库数据直接查询select * from tableName 在数据表格的左上角右击——将结果另存为选择路劲保存好的就是.csv格式的数据 有时候我们可能会把CSV中的数据导入到某个数据库的表 ...

随机推荐

  1. 简单说说spring的事务机制,以及是如何管理的?

    事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要. Spring的事务机制包括声明式事务和编程式事务. 编程式事务管理:Spring推荐使用TransactionTemplate,实际开 ...

  2. win 7 64 安装 tensorflow

    1:安装 python 3.5 2. 安装 pip 3: 安装 tensorflow 4,demo

  3. Spring MVC 知识总结

    参考文章:http://www.oschina.net/question/84460_9608 孔浩视频 1. 几个关键类: RequestMappingHandlerMapping 和 Reques ...

  4. ABP官方文档翻译 1.1 介绍

    介绍 介绍 快速示例 其他 启动模板 如何使用 介绍 我们通常会根据不同的需求来创建不同的应用程序.但是对于一些通用相似的结构总是一遍又一遍的实现,至少在某种程度上是这样的.常见的通用模块如授权.验证 ...

  5. [转]总结一下CSS中的定位 Position 属性

    在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...

  6. javaee加密部署,tomcat使用自己的classloader解密

    http://www.2cto.com/kf/201312/264455.html [起因] 公司需要对一个web项目进行加密之后出售, 大家都知道的,class很好反编译, 所以需要对class文件 ...

  7. 20145310 《Java程序设计》第8周学习总结

    20145310 <Java程序设计>第8周学习总结 教材学习内容总结 本周主要进行第十四章和第十五章的学习. 第十四章 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供 ...

  8. 20145230熊佳炜《网络对抗》实验八:WEB基础

    20145230熊佳炜<网络对抗>实验八:WEB基础 实验目标 Web前端HTML:能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTM ...

  9. word里怎么删除某一列

    光标定位在第二列第一个字的前面,然后按住Alt键,拖动鼠标,选中第二列字,松开Alt键,点击Delete键即可

  10. 分分钟解决 MySQL 查询速度慢与性能差

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的 ...