MySQL添加CSV文件中的数据
一。MySQL添加csv数据
此问题是前几天整理数据的时候碰到的,数据存在 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服务端,需要注意一些安全问题,你必须意识到这些问题以规避潜在的安全风险。
此文章转载自:https://www.cnblogs.com/nju2014/p/5456632.html
MySQL添加CSV文件中的数据的更多相关文章
- 将CSV文件中的数据导入到SQL Server 数据库中
导入数据时,需要注意 CSV 文件中的数据是否包含逗号以及双引号,存在时,导入会失败 选择数据库 -> 右键 -> 任务 -> 导入数据 ,然后根据弹出的导入导出向导(如下图)中的提 ...
- mysql 导入 csv文件中数据,只能导入第一行
用workbench导入csv数据,只能导入数据的第一行,也就是标注每一列的列名的那一行.但问题是,每次导入完成时,系统提示已经导入了500条记录(这个文件中的确有500条记录),可是刷新数据库后打开 ...
- Java从.CSV文件中读取数据和写入
.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项. import java.io.BufferedReader; ...
- MySQL从.ibd文件中恢复数据
首先,在MySQL命令行下执行如下命令可以查看MySQL中存放数据的位置: show global variables like "%datadir%"; 我这里的执行结果: +- ...
- 【SQL Server数据迁移】把csv文件中的数据导入SQL Server的方法
[sql] view plaincopy --1.修改系统参数 --修改高级参数 sp_configure 'show advanced options',1 go --允许即席分布式查询 sp_co ...
- scala/java等其他语言从CSV文件中读取数据,使用逗号','分割可能会出现的问题
众所周知,csv文件默认以逗号","分割数据,那么在scala命令行里查询的数据: 可以看见,字段里就包含了逗号",",那接下来切割的时候,这本应该作为一个整体 ...
- C# 将List中的数据导入csv文件中
//http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数 ...
- 【MySQL】CSV 文件导入MySQL
此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA INFILE, 30多秒就能 ...
- [Python]将Excel文件中的数据导入MySQL
Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已 ...
随机推荐
- oracle 数据库下所有表结构、数据量及缺失值统计
表结构 SELECT t1.TABLE_NAME, t1.COLUMN_NAME, t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')', t2.COMMENTS ...
- NOIP模拟赛 最佳组合
题目描述 Description \(Bzeroth\) 大陆最终还是覆灭了,所以你需要为地灾军团服务了. 地灾军团军师黑袍不擅长写题面,所以你只需要看简化版的题意即可. 给定 \(3\) 个长度均为 ...
- xcode静态库调试
[工程1]:静态库工程,用来生成xxx.a [工程2]:项目工程,需要引入静态库xxx.a 工程2引入静态库的方法是将工程1生成的xxx.a和include头文件目录,加入到工程2中. 而如果需要在工 ...
- 安卓和IOS、微信 公用一个二维码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- QSS QPushButton:hover :pressed ...为状态下变更字体颜色(color)无效,变成字体粗细(font-weight)有效???
//字体颜色变更无效 QPushButton:hover{ font-weight:bold; color:rgba(, , , ); } //字体颜色变更有效 QPushButton#pushBut ...
- QList去掉重复项 .toSet()报错???
我们知道QList::toSet()函数可以将QList转成QSet.可我却遇到报错: QList<QVariant> datas = it.value().values(); QSet& ...
- 消息队列的使用<一>:介绍、使用场景和JMS概念知识
目录 介绍 消息队列的理解 举个栗子 使用场景 消息队列的模型与概念理解 JMS模型 基本概念: 内容: JMS定义的消息结构: PTP式消息传递 PUB/SUB式消息传递 可靠性机制 事务 消息持久 ...
- JSP页面的注释细节
业务场景:通过后台传参,jstl标签控制一个页签是否显示,不过现在要去掉判断,直接让页签显示 在sublime直接这样注释,然后刷新,一直找不到标签显示,其它的都是正常的 <!--<c:i ...
- Linux安装部署jdk+tomcat+mysql
Linux安装部署测试环境 1. JDK安装下载 安装 yum search jdk 找到合适的jdk版本,以下图中的版本为例 yum install java-1.8.0-openjdk.x86_6 ...
- Java 银联云闪付对接记录
一开始盲目找资料走了弯路: 还是从银联给的官方文档入手最高效: 附件3:云闪付业务商户入网服务指引.pdf http://tomas.test.upcdn.net/pay/%E9%99%84%E4%B ...