mysql导入亿级数据_如何将上亿条大容量数据导入MYSQL
我有一份数据量达到1,0015,0806条的csv文件,现在需要导入Mysql中。 在我电脑中安装的版本是MYSQL8.0.12,常见的管理工具有:
已知的有三种办法: 1.用图形管理工具Navicat Premium通过导入向导8个步骤导入数据;
2.使用MYSQL Workbench 中的table data import导入数据;
3.使用load data infile语句导入;
最后结果:
方法1,2适合数据量较小的数据导入,在我导入数据时,由于数据太大,总是导入不成功。耗时巨大,最多的时候只能导入1000条数据,所以,不建议采用。 曾经我有想过把文件拆开,因为有1亿条数据,我想着拆成10个文件每个文件有1000万条数据,但是网上查了要么说需要下载拆分工具,要么用python,这两个我都不熟,所以果断舍弃,使用方法3导入。 数据导入前有准备工作要做,为将导入的文件找存放位置,建立相应数据库例如test,在test小创建表格并设置对应的列属性,接下来用Notepad++打开csv文件,查看文件编码格式,务必保证导入数据的编码格式是ANSI编码格式,若文件编码不正确改变编码格式
打开MYSQL命令窗口查询已有数据库并使用相应数据裤
接下来使用load data 命令导入数据了,使用命令之前有必要先了解load data 语法,根据官网参考手册,语法如下:
LOW_PRIORITY修饰符
功能:改变语句调度的优先级如果把执行检索(SELECT)的客户端称为"读取者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户端称 为"写入者"。MYSQL 的默认调度策略是写入操作优先于读取操作。 LOW_PRIORITY关键字影响DELETE、INSERT、LOAD DATA、REPLACE和UPDATE语句(写入操作)的执行调度。通常情况下,某张数据表正在被读取的时候,如果有写入操作到达,那么写入者一直等待读取者完成操 作(查询开始之后就不能中断,因此允许读取者完成操作)。如果写入者正在等待的时候,另一个读取操作到达了,该读取操作也会被阻塞,因为默 认的调度策略是写入者优先于读取者。当第一个读取者完成操作的时候,写入者开始操作,并且直到该写入者完成操作,第二个读取者才开始操作。 如果写入操作是一个LOW_PRIORITY(低优先级)请求,那么系统就不会认为它的优先级高于读取操作。在这种情况下,如果写入者在等待的时候,第 二个读取者到达了,那么就允许第二个读取者插到写入者之前。只有在没有其它的读取者的时候,才允许写入者开始操作。理论上,这种调度修改暗示着,可能存在 LOW_PRIORITY写入操作永远被阻塞的情况。如果前面的读取操作在进行的过程中一直有其它的读取操作到达,那么新的请求都会插入到 LOW_PRIORITY写入操作之前。
CONCURRENT修饰符使用load data ,如果使用满足并发插入条件CONCURRENT的MYISAM表指定(即,中间不包含空闲块),则其他会话可以在执行load data时从表中检索数据。即使没有其他会话同时使用该表,使用该CONCURRENT选项load data也会影响某个位的性能。
输入文件名:文件名必须以文字字符串形式给出。在Windows上,将路径名中的反斜杠指定为正斜杠或加倍反斜杠(重点)
分隔符:fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项: terminated by:分隔符,意思是以什么字符作为分隔符
enclosed by:字段括起字符
escaped by:转义字符 lines terminated by:描述字段的分隔符,默认情况下是tab字符(\t) 当我们要导入到MySQL表中的文本文件具有以逗号','分隔的值或者可能与冒号‘:’,分号 ';' 之间的任何其他分隔符分隔时,应使用'FIELDS TERMINATED BY'选项。
最终语法如下: LOAD DATA INFILE 'path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
我在刚开始导入的文件路径格式如下:
load data infile 'C:\ProgramData\MySQL\MySQL Server8.0\Uploads\XXX.csv'
遇到错误:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
通过查询语句 show variables like '%secure%'; 查到--secure-file-priv--位置将要导入的文件放在--secure-file-priv--相应位置后依然出现1290错误,将网上的各种办法逐一试过后发现是文件路径书写错误(汗。。。),最终通过如下语句成功导入数据:
历时将近1个小时,虽然时间也不短,但是相较图形界面引导导入而言导入速度更快。 最后再说一点,我在审核导入语句时曾用过 lines terminated by '\r\n'; 结果只能导入一行,那肯定是换行的问题,网友给的解释是:如果已经在Windows系统中生成了文本文件,可能必须使用LINES TERMINATED BY ‘\r\n’来正确地读取文件,因为Windows程序通常使用两个字符作为一个行终止符。(我的理解就是如果导入的是txt文件,那就用lines terminated by '\r\n',否则就用lines terminated by '\n')
最后,希望以后我们都能高效的导入数据量大的数据文件。
mysql导入亿级数据_如何将上亿条大容量数据导入MYSQL相关推荐
- 查询一个表中一个字段相同的数据_最实用MySQL 查询当天、本周,本月、上一个月的数据...
MySQL 查询当天.本周,本月.上一个月的数据 mysql查询当天的所有信息: SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间 ...
- mysql数据库导入到excel表格数据_[转载]将EXCEL表格中的数据导入mysql数据库表中(两种方法)...
今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行: 在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保 ...
- mysql事务手写笔记_兴奋了!阿里技术官手写“MySQL笔记”,传授你年薪百万级干货...
前言 MySQL重要吗?重要!为什么重要?因为它在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的.My ...
- 【python 处理亿级数据】使用 Pandas 处理亿级数据
此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择.事实确实如此,在数据分析领域,那么如何处理亿级数据呢 ...
- MySQL学生综合测评系统_大学生综合测评系统的设计和实现(MySQL)
大学生综合测评系统的设计和实现(MySQL)(任务书,开题报告,中期检查表,毕业论文20000字,程序代码,数据库) 摘 要 本文详细介绍了本系统设计的基本方法.系统的需求分析.系统的架构设计和系统 ...
- struts2导入excel模板_「微干货」“人员其他数据导入”应用介绍
前提概要 人员档案资料维护多种多样,经常碰到已经运行一段时间,并且人员档案的基本信息已维护好了:此时,又要补充诸如"教育经历"类似的多行数据,脑壳疼,如何录入可以简便,让我们一起来 ...
- mysql编写完怎么执行_面试官:一条MySQL更新语句是如何执行的?
在面试中面试中如果被面试官问到在MySQL中一条更新语句是怎么执行的?,下面让我们来探究一下! 流程图 这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程 ...
- mysql数据库访问300ms以上_[Java教程]一张900w的数据表,16s执行的SQL优化到300ms?...
[Java教程]一张900w的数据表,16s执行的SQL优化到300ms? 0 2020-11-20 16:00:16 一,前言 证实 有一张财务流水表,未分库分表,目前的数据量为9555695,分页 ...
- sqoop mysql 乱码_请问一下,用sqoop导数据到mysql如果遇到字段编码是utf8mb4的情况怎么处理?...
我要到的数据其中一个字段里应该是有表情符号,之前数据库的处理是把,字段编码修改成utf8mb4.但现在用sqoop导数据到mysql(对应字段已修改为utf8mb4),却报了如下错误. 谢谢. 15/ ...
最新文章
- MS DTC 无法正确处理 DC 升级/降级事件的解决
- 如何禁用<textarea>的调整大小抓取器? [重复]
- linux+while循环多条件,有效的while循环条件客户端选择(TCP连接在Linux - C)
- php控制器无限极分类,thinkphp无限极分类实现方法
- Layout动画:在android布局发生变化时添加动画效果
- java怎样开关语句随机数 不重复_怎样用java产生一个指定范围而且不重复的随机数?...
- Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别
- C++预处理和头文件保护符
- python --- 二分查找算法
- Android 事件分发,分发机制
- Scala学习笔记01:Scala概述、安装配置、简单使用
- 什么软件画er图方便_er图绘制工具|er图绘制工具(powerdesigner) v16.5 免费版 - 软件下载 - 绿茶软件园|33LC.com...
- 要写好综述类论文?这几个点你需要注意
- DataWhale-动手数据分析-Task01:数据加载及探索性数据分析
- 动手学深度学习day-two
- Python Flask学习_使用flask-login实现认证蓝本(二)
- tt服务器系统,TT服务器使用手册.doc
- 移植python到小米路由器记录。
- Kubernetes集群安装 gatekeeper
- Python文件操作-文本文件、二进制文件、csv文件的读取写入、OS、shutil、CSV模块、常用字符编码
热门文章
- 这是“我”的故事 —— 崔晨洋
- 数据共享交换平台的问题及解决方案
- Java -Stream流和常见函数式接口
- 有什么低价好用的电容笔推荐?大一新生必备物品
- JavaScript 中清空数组的几种方法
- Python3 实现 Redis 消息队列
- android zip解压进度_android zip4j之--解压zip文件并实时显示解压进度
- ROS笔记(二) SolidWorks to URDF 并实现可视化
- android rtsp server or clinet work success
- 软件测试 接口测试 Jmeter 5.5 安装教程