作业要求

构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万条记录。

注:关系movies的主键为(title,year)

要求如下:

  1. 在尽可能短的时间内完成;
  2. 只允许使用原生的SQL,不允许将SQL作为嵌入语言,也不允许使用其他语言如C#、Python等来完成;
  3. 提交你的详细解决方案和结果。

本文利用LOAD DATA INFILE将包含一千万条数据的CSV文件存入mysql。

实现

除了newcsv.py,其他命令均为cmd命令。

生成包含1千万条数据的CSV文件

用python生成与关系movies结构相同的包含1千万条数据的CSV文件。

newcsv.py如下:

该程序大概耗时18秒。

import csv
import time # num_value条数据
num_value = 10000000 # 开始计时
time_start = time.time() # 生成文件
with open(r'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\bigdata.csv', 'w', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(['title', 'year', 'length', 'movieType', 'studioName', 'producerC']) for i in range(1, num_value+1):
f_csv.writerow(['GoGoGo', i, 120, 'sicFic', 'MGM', 100]) # 结束计时
time_end = time.time() # 输出耗费时间(秒)
print('Time Cost:', time_end - time_start)

登录mysql

mysql -uroot -p123456

上面root是我的mysql用户名,123456是我的mysql密码。

进入数据库moviesdb

use moviesdb;

创建关系mymovies

只复制关系movies的结构,并不复制其数据

CREATE TABLE mymovies LIKE movies;

将CSV文件存入数据库

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/bigdata.csv' INTO TABLE mymovies FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

我的电脑上,该文件存入mysql耗时862.646秒,大概14分钟,如下图所示:

参考链接

https://www.cnblogs.com/freefei/p/7679991.html

https://blog.csdn.net/qq_22855325/article/details/76087138

https://blog.csdn.net/weixin_44595372/article/details/88723191

https://zhidao.baidu.com/question/185665472.html

https://www.cnblogs.com/zhangjpn/p/6231662.html

https://www.cnblogs.com/wangcp-2014/p/8038683.html

https://blog.csdn.net/gb4215287/article/details/82669785


作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


LOAD DATA INFILE读取CSV中一千万条数据至mysql的更多相关文章

  1. 关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题

    在使用MySQL时,常常会用到Load Data Infile来导入数据,在遇到Date类型的列时,有时会遇到格式转换的问题: 首先创建一张简单的people表,包含名字,生日,年龄三个字段: mys ...

  2. MySQL中load data infile将文件中的数据批量导入数据库

    有时候我们需要将文件中的数据直接导入到数据库中,那么我们就可以使用load data infile,下面具体介绍使用方法. dao中的方法 @Autowired private JdbcTemplat ...

  3. mysql load data infile的使用 和 SELECT into outfile备份数据库数据

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...

  4. mysql 的load data infile

    LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.如果指定LOCAL关键词,从客户主机读文件.如果LOCAL没指定,文件必须位于服务器上.(LOCAL在MySQL3.22. ...

  5. mysql 的load data infile要使用

    LOAD DATA INFILE从文本文件中读出的声明以极高的速度到表. 1.基本语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'fi ...

  6. mysql load data infile auto increment id

    1. 问题描述 当使用load data infile 向表中插入数据 而主键id是 auto_increment 时 ,执行 load data 不会报错 但插入也不成功 2. 问题解决 2.1 方 ...

  7. python+mysql:实现一千万条数据插入数据库

    作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

  8. 合理使用mysql中的load data infile导入数据

    基本语法: load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]into table tbl_name ...

  9. mysql中使用load data infile导入数据的用法

    有时需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用mysql load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. LO ...

随机推荐

  1. VS2010 如何在调试的时候输入参数

    VS2010 如何在调试的时候输入参数 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 很明显,好多算法程序实现的时候提供的例程都是需要在命令行中输入参数,比 ...

  2. 用ExtentReports美化你的测试报告

    前言 在实际的自动化测试工作中经常会用到一些报告生成工具大概分为两类,一类是测试框架自带的报告生成工具如:JUnit+Ant.TestNG:另一类就是专用报告工具如ReportNG等.这些报告要么在U ...

  3. [转帖]超详细的EXPDP、IMPDP规范及常用技巧总结

    超详细的EXPDP.IMPDP规范及常用技巧总结 https://www.toutiao.com/i6727232212850180619/ 原创 波波说运维 2019-08-24 00:06:00 ...

  4. es查询优化思路

    尽可能的利用内存 将尽可能的索引留在内存,即留更多的堆外内存给es 不查询的字段尽量不要往es插入,节省索引的空间大小(es + hbase) 数据预热 冷热数据分离 文档字段设计 根据查询场景设计字 ...

  5. HikariCP连接池及其在springboot中的配置

    主要配置如下: 配置项 描述 构造器默认值 默认配置validate之后的值 validate重置 autoCommit 自动提交从池中返回的连接 true true - connectionTime ...

  6. Java基础---Java三元运算

    一元运算符:只需要一个数据就可以进行操作的运算符.例如:取反!.自增++.自减--二元运算符:需要两个数据才可以进行操作的运算符.例如:加法+.赋值=三元运算符:需要三个数据才可以进行操作的运算符. ...

  7. Netty源码剖析-关闭服务

    参考文献:极客时间傅健老师的<Netty源码剖析与实战>Talk is cheap.show me the code! ----主线:  ----源码: 先在服务端加个断点和修改下代码:如 ...

  8. (九)Javabean与Jsp(来自那些年的笔记)

    目录 JavaBean 在JSP中使用JavaBean 标签用法 带标签体的 JavaBean 标签 setProperty 标签 getProperty 标签 JSP开发模式 案列:使用 模式一 编 ...

  9. Hibernate之关联关系(一对多)

    今日分享hibernate框架的简单关联关系 一:关联关系简介 1.1 什么是关联关系 关联指的是类之间的引用关系.如果类A与类B关联,那么被引用的类B将被定义为类A的属性. 例如: class B{ ...

  10. vi 使用系统剪贴板(clipboard)

    ref : https://www.jianshu.com/p/771b95e34293 http://www.bubuko.com/infodetail-469867.html 在vi中,如果编译时 ...