MySQL如何导入大量数据?

news2024/11/24 11:49:35

有时我们会遇到需要将大量数据导入MySQL的需求,一般数据存储在csv或者txt中,数据由","分隔。这里提供两种方案供大家选择。

一、创建测试表

为了测试,我们先创建数据库和表,并创建一个用户。

create database loaddata;

use loaddata

CREATE TABLE `test` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `sp_name` varchar(50) NOT NULL DEFAULT '' COMMENT '服务商名称',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='服务商类型';

CREATE USER 'loader'@'%' IDENTIFIED BY '1234Abcd*';
GRANT ALL PRIVILEGES ON loaddata.* TO 'loader'@'%';

二、方案一:load data infile

2.1说明

load data infile其实有两种形态,load data infile和load data local infile。

  • load data infile:只能在MySQL服务器上执行,且需要文件存放到指定位置,可以使用show variables like ‘%secure%’; 查看

  • load data local infile:可以在本地执行

2.2操作

2.2.1开启local_infile

首先我们需要在MySQL服务器开启local_infile

# 查看
show variables like 'local_infile';
# 开启
set global local_infile=on;

如果不开启的话,执行load data local infile会报ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides。

2.2.2执行上传

通过如下命令进行上传。load data local infile会将数据一块一块的上传,但对这块数据是作为整个事务进行上传的。

load data local infile "/Users/bytedance/Downloads/1.csv" into table loaddata.test fields terminated by',';

执行效果为:

图片

查看表里的数据:

图片

三、方案二:mysql shell

load data infile 不够灵活,另外可能因为事务导致性能出现问题,我们可以用mysql shell实现上传,底层使用的也是load data infile,但提供了更高的灵活性。

3.1安装

下载地址为:https://downloads.mysql.com/archives/shell/

我们可以从该地址选择合适的版本,mysql shell的版本需要和OS的版本匹配。

3.2使用

3.2.1连接mysql

对于mysql操作,我们可以通过如下命令连接到mysql

mysqlsh loader@127.0.0.1:3306

图片

3.2.2更改编程语言

如上图所示,连接后的js表示现在是JavaScript,我们可以切换成python或者sql,命令为:

\sql
\py

图片

3.3.3导入数据

导入数据我们使用python语言,命令如下:

util.import_table(  
        "/Users/bytedance/Downloads/1.csv",
    {
        "schema": "loaddata", 
        "table": "test",
        "dialect": "csv-unix",
        "skipRows": 0,
        "showProgress": True,
        "bytesPerChunk": "1M",
        "threads":2,
        "maxRate": "2M",
        "columns": ["id", "sp_name"]
        });

几个重要参数说明一下:

schema:数据库名

table:表名

showProgress:展示进度

bytesPerChunk:默认的 chunk 大小为 50M,我们可以调整 chunk 的大小,减少事务大小,如我们将 chunk 大小调整为 1M

threads:使用几个线程来导入数据,这次设置2个

maxRate:每个线程的速率为 M/s,这次设置为2M/s,这意味最高不会超过 2*2=4M/s。

图片

图片

其它参数大家可以参考这篇文章:https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/group__util.html#ga14b9db6de5a13f78a1a41a537ed07887

资料

  1. MySQL 执行load data infile时同步原理及注意事项

  2. 将CSV文件快速导入MySQL中

  3. 13.2.5. LOAD DATA INFILE语法

  4. 请教 关于 load data local infile 导入10G左右文本 到导入3G左右速度就特别慢

  5. 对MySQL load data infile的一点想法

  6. mysql load file 权限_Mysql 命令 load data infile 权限问题

  7. 使用 LOAD DATA LOCAL INFILE,sysbench 导数速度提升30%

  8. 技术分享 | MySQL Shell import_table 数据导入

  9. mac mysql shell 安装_mysql for mac 安装和基本操作

  10. mysql shell是什么意思_MYSQL SHELL 到底是个什么局 剑指 “大芒果”

  11. shell下载地址

  12. 教你使用MySQL Shell连接数据库的方法

  13. https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/8.0/group__util.html#gaa1ee4527bdb71fa736f6cbe168064079 官网

  14. https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/group__util.html

  15. https://www.yisu.com/zixun/598441.html

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js的BOM对象中的window、location使用

说明:BOM的全称是Browser Object Model,浏览器对象模型,有Window(浏览器窗口)、Navigator(浏览器)、Screen(屏幕)、History(历史记录)和Location&…

js函数、Array和String的定义和使用

函数 js中的函数&#xff0c;类似java中的方法 <script>// 定义函数方式一function addA(x, y) {return x y;}// 定义函数方式二&#xff0c;注意addB是函数的名称&#xff0c;不是返回值let addB function(x, y) {return x * y;}</script><script>docume…

vscode语音插件开发-在nodejs里面转换音频文件格式并压缩导出zip格式

继我的上一篇文章&#xff1a;&#xff01;vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件 踩坑日记 音频格式转换这里我使用的是ffmpeg第三方库&#xff0c;官网文档。 ffmpeg简介 FFmpeg是一个跨平台的自由软件&#xff0c;用于实时音频、视频流以及音频、视频…

Vue电商项目--详情页面--产品售卖属性

滚动行为 开发某一个产品的详情页面&#xff1f; 1.静态组件 但是这个详情页&#xff0c;我们还没有注册为路由 当点击商品图片的时候&#xff0c;跳转到详情页面&#xff0c;在路由跳转的时候需要带上产品的ID给详情页面 干掉a标签换成router-link标签 这里要注意的一点是…

MybatisPlus处理业务数据新思路

文章目录 [toc] 1.问题2.新姿势3.总结 1.问题 由于之前搞了一个停车场的项目&#xff0c;有一个区域的停车场收费被投诉了被举报没有按照政府要求来计费&#xff0c;所以需要将之前的那些停车计费的数据重新计算&#xff0c;将多缴费的钱拿去交罚款&#xff0c;这个就很坑&…

MongoDB—Indexes

一、Indexes 索引支持在MongoDB中高效执行查询。没有 索引&#xff0c;MongoDB必须执行集合扫描&#xff0c;即扫描每个 集合中的文档&#xff0c;以选择与 查询语句。如果查询存在适当的索引&#xff0c; MongoDB可以使用索引来限制它必须的文档数量 检查。 索引是特殊的数据…

近期群晖容器查询注册表失败,无法下载镜像

前言 本以为是群晖的问题&#xff0c;后来发现大家也都遇到了类似的问题&#xff0c;查询注册表出现错误&#xff0c;无法搜索和下载docker镜像&#xff0c;本期就来介绍几个可平替的方案。 方案一&#xff1a;SSH拉取 使用SSH拉取首先要打开群晖的SSH功能&#xff1a;在【…

数据结构(C语言):顺序循环队列的基本操作

一、题目 设队列的元素类型为char&#xff0c;实现顺序循环队列的各种基本操作的程序&#xff1a; ① 初始化队列Q&#xff1b; ② 判断队列Q是否为空&#xff1b; ③ 入队操作。循环调用入队操作&#xff0c;将若干元素&#xff08;不少于10个&#xff09;入队&#xff1b…

LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/group-anagrams/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个字符串数组&#x…

如何使用ChatGPT?初学者简单指南

Chat GPT 风靡全球&#xff0c;并在短时间内成为世界上增长最快的应用程序。随着所有关于其潜在影响的讨论&#xff0c;你可能会想知道&#xff1a;如何使用 ChatGPT&#xff1f; 使用 ChatGPT需要准备&#xff1a;一个 OpenAI 帐户和一个网络浏览器。 访问chat.openai.com并…

ICV报告:中国的数字经济与5G市场研究报告

近日&#xff0c;专注于前沿科技领域的国际咨询机构ICV发布了《中国的数字经济与5G市场研究报告》。报告指出&#xff0c;随着5G商用的发展&#xff0c;5G对经济社会的影响逐步显现&#xff0c;其影响突出体现在对数字产业发展的带动上。随着5G应用的不断创新与扩散&#xff0c…

网络公开课1

网络公开课1 概念* 常见面试题 输入URL发生哪些事 https http1.0 2.0的区别…… OSI七层模型 协议DNS 传输层 三次握手 四次挥手 http 物理层&#xff1a;并不是指光纤电缆那些&#xff0c;那些是设备。只关心如何传输数据&#xff0c;传输的是比特流 0 1。 应用层&#xff1a;…

汇编物理地址计算与段地址认识

1.物理地址概念: 所有内存单元构造的存储空间是一个一维性空间.每个内存单元在这个空间都有一个唯一的地址,这个唯一的地址称为物理地址. CPU通过地址总线送入存储器的必须是一个内存单元的物理地址. 不同的CPU有不同形式的物理地址形成方式. 物理地址计算公式: 物理地址 …

微服务的演变史(单体式、分布式、SOA架构、微服务架构)

单体式架构 从架构层面来考虑:一个应用只部署一个服务,或该应用由多个服务组成的时候,只部署在一台服务器上 把一种系统的所有功能全部耦合在一个应用中的框架方式 这种开发方式简单,但是只适合体量较小的业务,一旦业务体量增加到一定程度的时候,单机的硬件资源将没办法满足…

JOSEF约瑟 JDL-1001A 电流继电器 导轨式安装 批发价格

名称&#xff1a;电流继电器品牌&#xff1a;JOSEF约瑟型号&#xff1a;JDL-1001A触点容量&#xff1a;250V2A整定范围&#xff1a;0.03-9.99A返回系数&#xff1a;≥0.9特点&#xff1a;交直流两用、消耗小、返回系数高。 型号说明 JD L -1 XXX X/ XXX / XXX 系列型号 JDL…

首发Yolov5/Yolov7优化:Adam该换了!斯坦福最新Sophia优化器,比Adam快2倍 | 2023.5月斯坦福最新成果

1.Sophia优化器介绍 斯坦福2023.5月发表的最新研究成果,他们提出了「一种叫Sophia的优化器,相比Adam,它在LLM上能够快2倍,可以大幅降低训练成本」。 论文:https://arxiv.org/pdf/2305.14342.pdf 本文介绍了一种新的模型预训练优化器:Sophia(Second-order Clippe…

vue2_模版语法

目录 模版语法 react用jsx语法编译后的null作用 插值表达式{{}} v-bind和{{}} 关于国内谷歌自带翻译停用如何解决&#xff08;额外&#xff09; 会一点的插值表达式&#xff0c;也有限制 模版语法 更接近原生js的写法jsx语法 jsx是react提出的&#xff1b;后很多前端框架…

LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 往期回顾&#xff1a;LeetCode 单周赛第 346 场 仅 68 人 AK 的最短路问题 周赛 347 概览 T1. 移除字符串中的尾随零&#xff08;Easy&#xff09; 标签&#xff1a;模拟、…

HTTP协议深入理解+如何使用Fiddler抓包

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、HTTP概述 1.1 什么是HTTP 1.2 理解应用层协议 二、抓包工具fiddler的使用 2.1 几个需要注意的点 2.2 fiddler的原理 2.3 fiddler的使用技巧 三、HTTP请求&#xff08;Re…

intel驱动程序和支持助理常见问题:不识别、无法检测等问题解决方法

起因&#xff1a; wifi驱动有点问题&#xff0c;于是想着更新一下官方的驱动&#xff0c;下载intel驱动程序和支持助理并安装完成后&#xff0c;打开成了这个样子&#xff0c;刷新多少次都没有用&#xff0c;就是不识别。 解决方法&#xff1a; 经过一波胡乱操作&#xff0…