【MySQL】CSV 文件导入MySQL
此问题是前几天整理数据的时候碰到的,数据存在 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的更多相关文章
- [转]csv文件导入Mysql
本文转自:https://blog.csdn.net/quiet_girl/article/details/71436108 本篇博客主要讲将csv文件导入Mysql的方法(使用命令行). Step1 ...
- MySql csv文件导入导出
一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...
- 使用pandas导入csv文件到MySQL
之前尝试过用命令行来解决csv文件导入到MySQL这个问题,没想到一直没有成功.之后会继续更新的吧,现在先用pandas来解决这个问题,虽然会复杂一点,但至少能用. 例子是导入movielens的ra ...
- csv文件导入到mysql
如何将csv文件导入到mysql数据库呢,方法有很多但最简单粗暴的方法还是用sql语句啦,像下面这样. LOAD DATA LOCAL INFILE 'csv文件路径' INTO TABLE 数据表名 ...
- CSV文件导入导出MySQL
使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...
- csv批量导入mysql命令
今天把从Kaggle上下载下来的csv数据导入mysql,想做个统计分析,怎奈csv文件有些大.所以仅仅能用mysql 命令导入,现mark下,以备以后不时之需: 1. 导入: 基本的语法: load ...
- 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中
参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...
- SQL Server:把CSV文件导入到SQL Server表中
有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候. 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Ser ...
- 把CSV文件导入到SQL Server表中
保存数据库数据直接查询select * from tableName 在数据表格的左上角右击——将结果另存为选择路劲保存好的就是.csv格式的数据 有时候我们可能会把CSV中的数据导入到某个数据库的表 ...
随机推荐
- Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决
一.问题回顾 线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题. 2018-05-14 20:01:32.810 ERR ...
- 清晰讲解LSB、MSB和大小端模式及网络字节序
时隔一个月又回到了博客园写文章,很开心O(∩_∩)O~~ 今天在做需求的涉及到一个固件版本的概念,其中固件组的人谈到了版本号从MSB到LSB排列,检索查阅后将所得整理如下. MSB.LSB? MSB( ...
- 【android】 中文URL资源找不到的问题
在博客园安卓客户端时,遇到过中文资源找不到的问题 背景:在使用PICASSO的时候,遇到过中文路径加载失败.比如 https://images0.cnblogs.com/news_topic/携程.j ...
- Android 4.4 音量调节流程分析(一)
最近在做Android Audio方面的工作,有需求是在调节Volume_Up_Key & Volume_Down_key时,Spearker or Headset每音阶的衰减变为3db左右. ...
- 带你走进AJAX(1)
ajax是什么? (1)ajax (asynchronouse javascript and xml) 异步的javascript 和xml (2)ajax是一个粘合剂,将javascript.xml ...
- [Deep Learning]任意层cnn的matlab版本实现
之前实现了一层的卷积神经网络,又实现了两层的卷积神经网络,接下来把cnn扩展到任意层就不难了. 这难道就是传说中的“道生一,一生二,二生三,三生万物”么?=.= 代码还是在github上. 比较有趣的 ...
- FIRST GAME.
-Doragon Kuesuto(.c) Doragon Kuesuto 1.0 Doragon Kuesuto 1.15 Doragon Kuesuto 1.6
- 20145303刘俊谦 Java 代码托管
(20145303刘俊谦) Java 第三周代码托管 这是最近保存下来的代码,今天一起上传的,有很多在代码学习过程中无意识删掉了:
- 20145310 《Java程序设计》第2周学习总结
20145310 <Java程序设计>第2周学习总结 教材学习内容总结 第三章主要学习了java的基础语法. java中的基本类型主要可区分为,整数.字节.浮点数.字符与布尔.整数shor ...
- 20145313张雪纯 《Java程序设计》第7周学习总结
20145313张雪纯 <Java程序设计>7周学习总结 教材学习内容总结 1967年定义的国际原子时,将秒的国际单位定义为铯原子辐射振动9192631170周耗费的时间. 为了简化日后对 ...