mysql快速导入sql文件_MySQL高效导入多个.sql文件方法详解

2023-10-27

MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source。

但是这两个命令的导入效率差别很大,具体请看最后的比较。

(还有sqlimport和LOAD DATA INFILE等导入方法,不过它们主要用于导入.csv或.xml文件数据,不是.sql文件)

假设我们有一个 users.sql 大文件,为方便我们将其拆分成:user1.sql、user2.sql、user3.sql 三个独立的小sql文件。

1、mysql命令导入

mysql命令导入多个sql文件方法:

$ for SQL in *.sql; do mysql -uroot -p"123456" mydb < $SQL; done

2、source命令导入

source命令需要首先进入MySQL命令行:

$ mysql -uroot -p"123456"

导入多个sql文件需要先创建一个额外的文件,名字随意,这里我们取:all.sql,内容:

source user1.sql

source user2.sql

source user3.sql

注意,这里每行一条,必须以source命令开头。

然后用source命令执行该文件:

mysql > use mydb;

mysql > source /home/gary/all.sql

3、如何提高导入速度?

对于百M级以上文件,如果光这样导入,速度是极其缓慢的,

根据MySQL官方建议,我们有几个措施可以极大提高导入的速度,如下:

对于MyISAM,调整系统参数:bulk_insert_buffer_size(至少单个文件大小的2倍以上)

对于InnoDB,调整系统参数:innodb_log_buffer_size(至少单个文件大小的2倍以上,导入完成后可以改回默认的8M,注意不是innodb_buffer_pool_size。)

除主键外,删除其他索引,导入完成后重建索引。

关闭自动提交:autocommit=0。(请勿用set global autocommit=1;命令来关闭,否则整个MySQL系统都会停止自动commit,innodb log buffer很快就会爆满,5和6项也请仅在会话中有效,正确做法请往下看)

关闭唯一索引检查:unique_checks=0。(关闭了这一项会影响on duplicate key update的效果)

关闭外键检查:foreign_key_checks=0。

insert值写在一条语句内,如:INSERT INTO yourtable VALUES (1,2), (5,5), ...;

有自增列的,设置:innodb_autoinc_lock_mode的值为2,

其中,第1-2、8条在修改my.cnf文件,然后重启MySQL:

bulk_insert_buffer_size=2G;

innodb_log_buffer_size=2G;

innodb_autoinc_lock_mode=2;

第3条用到的命令:

#删除索引

DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

# 添加索引

ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

第4-6条写在.sql中,批量bash脚本如下:

for SQL in *.sql;

do

echo $SQL;

sed -i '1i\SET autocommit=0;\nSET unique_checks=0;\nSET foreign_key_checks=0;' $SQL

sed -i '$a\COMMIT;\nSET autocommit=1;\nSET unique_checks=1;\nSET foreign_key_checks=1;' $SQL

done

按照以上几个步骤调整后,插入速度必会有大幅度的提高。

4、mysql和source效率比较

在sql文件较小的情况下,source速度比mysql高,

在实际测试导入时,5个合计25M的sql文件,mysql命令的速度比source要快2秒(我自己的测试,不代表普遍的结果),

可以粗略得出,在导入大的sql文件时,建议使用mysql命令。

以上既是MySQL高效导入多个.sql文件的方法,希望能帮助到大家

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql快速导入sql文件_MySQL高效导入多个.sql文件方法详解 的相关文章

  • 在 vscode 打开新文件被覆盖问题的解决

    在 vscode 打开新文件被覆盖问题的解决 方法一 在左侧文件列表单击使得窗口文件发生替换 双击则可以显示多个文件标签 方法二 windows 使用 ctrl shift p mac 使用 command shift p 输入settin
  • matplotlib绘制3d图时出现Unknown projection '3d'错误

    报错原因 matplotlib版本和python版本的更新问题 解决办法 from mpl toolkits mplot3d import axes3d 将 fig mp figure 3D Scatter ax3d fig gca pro
  • 数据结构与算法分析概括

    参考博文 https blog csdn net u012152619 article details 42059675 1 时间复杂度之间的关系 O 1
  • ReactHooks总结

    Hooks API useState 使用方法 const count setCount useState 0 可以传入一个参数作为这个状态的默认值 函数组件的写法 const App gt const count setCount use
  • 跨平台markdown编辑器typora推荐

    跨平台markdown编辑器typora推荐 文章目录 跨平台markdown编辑器typora推荐 一 下载安装 二 简单介绍 1 预览模式和源代码模式切换 2 toc 自动生成目录 3 支持导出为pdf html等多种格式 4 专注模式
  • 算法---分治策略(二分查找)

    一 二分查找 二分查找也成为二分折半查找 在有序的数组中 数据量较大 查找一个数据速度是很快的 类似于二分查找的思想在生活中也是处处可见的 就比如说猜数字游戏 在1 100之间猜到对方想到的数字 首先说56 对方说小了 那么接下来你说出数字
  • 重构之处理IE浏览器兼容问题

    目录 情景 1 判断是否为 IE 浏览器 情景 2 TypeError 对象不支持 includes 属性或方法 情景 3 报错 SCRIPT5022 SecurityError sockjs js 1683 3 情景 4 get 自动请求
  • 查看MySQL服务器是否启用了SSL连接,并且查看ssl证书是否存在

    文章目录 一 查看MySQL服务器是否启用了SSL连接 1 登录MySQL服务器 2 查看SSL配置 二 查看证书是否存在 前言 查看MySQL服务器是否启用了SSL连接 并且查看ssl证书是否存在 一 查看MySQL服务器是否启用了SSL
  • TrimLeft()和TrimRight()

    strming TrimLeft 将字符串最前面的空格修整掉 当在没有参数的情况下调用时 TrimLeft删除换行符 空格和tab字符 strming TrimRight 消除从右侧起所遇到的所有空格字符
  • uni-app app-plus

    项目目录结构 index vue
  • DUBBO用户指南

    随着互联网的发展 网站应用的规模不断扩大 常规的垂直应用架构已无法应对 分布式服务架构以及流动计算架构势在必行 亟需一个治理系统确保架构有条不紊的演进 单一应用架构 当网站流量很小时 只需一个应用 将所有功能都部署在一起 以减少部署节点和成
  • MybatisPlus学习(四)条件构造器Wrapper方法详解

    文章目录 前言 1 条件构造器 2 QueryWrapper 2 1 eq ne 2 2 gt ge lt le 2 3 between notBetween 2 4 like notLike likeLeft likeRight 2 4
  • TCP之Nagle算法和延迟确认及关闭参数

    主要为了解决首发包延迟问题 关闭Nagle算法 设置TCP NODELAY 关闭延迟确认Delayed Ack 每次都得设置 TCP QUICKACK 基础知识顺便列一下 Nagle算法 为了减少网络中小分组的数目 减少网络拥塞的情况 Na
  • Java设计模式-单例模式

    单例模式概念 单例模式是设计模式中最简单的形式之一 这一模式的目的是使得类的一个对象成为系统中的唯一实例 要实现这一点 可以从客户端对其进行实例化开始 因此需要用一种只允许生成对象类的唯一实例的机制 阻止 所有想要生成对象的访问 使用工厂方
  • 如何使用开源项目学习(Github的使用)

    使用开源项目其实有github这个工具就可以 下面我们来介绍一些常用的搜索GitHub开源的方法 最常使用的选项如下 pushed gt 2019 02 01 在最近这一天修改过 in name 关键字 名字里面包含关键字 in readm
  • w10运行游戏计算机中丢失xinput1-3.dll,WIN10启动游戏由于找不到xinput13dll无法运行如何修复...

    xinput1 3 dll是Microsoft DirectX for Windows的控制模块 在win10系统中 每当用户在启动游戏时 出现错误提示找不到 xinput1 3 dll 说明系统中缺失这个dll文件或者该dll文件没有被注
  • python报错:ERROR: No matching distribution found for

    使用pip安装包时提示报错如下 ERROR Could not find a version that satisfies the requirement
  • Linux中显示文件系统的磁盘使用情况及统计df和du命令的基本用法

    df disk free 功能 查看磁盘的整体使用情况 包括总的磁盘空间大小 使用了多少磁盘空间 还剩多少磁盘空间可以使用 用法 df 格式显示参数 需要统计的目录 df不加任何参数 默认显示所有目录的磁盘使用情况 以KB为单位 eg df
  • 蓝桥杯-排列字母-优先队列

    问题描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为

随机推荐

  • 3Dmax 头发制作

    要在头顶创建头发 请使用样条线框架 此方法有助同时设计大量头发 尤其是长发 用于长出满头头发的样条线框架 样条线框架方法与络腮胡和唇胡所采用的多边形方法稍有不同 将从样条线 而不是从头部曲面 长出头发 没有任何毛发导向 样条线自身即为导向
  • sqli - labs - 13 ~ 14

    我们先来看看源SQL语句 发现使用 闭合的 查看数据库名 and extractvalue 1 concat database 可以看出数据库名为 security 查看所有数据库 and extractvalue 1 concat sel
  • 【AI】生成式人工智能用例和应用

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • openssl命令基础用法:创建CA和申请证书

    使用openssl工具创建CA证书和申请证书时 需要先查看配置文件 因为配置文件中对证书的名称和存放位置等相关信息都做了定义 具体可参考 usr lib ssl openssl cnf 文件 修改文件内容 etc pki CA中创建下面文件
  • 基于 Flink CDC 实现海量数据的实时同步和转换

    摘要 本文整理自 Apache Flink Committer Flink CDC Maintainer 阿里巴巴高级开发工程师徐榜江 雪尽 在 5 月 21 日 Flink CDC Meetup 的演讲 主要内容包括 Flink CDC
  • Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)

    一 窗口置顶 与 取消置顶 void MainWindow on windowTopButton clicked if m flags NULL m flags windowFlags setWindowFlags m flags Qt W
  • libpcap、struct、dpkt、scapy、pyshark五种方式获取pcap原始包的速度对比

    from pylibpcap pcap import rpcap import struct from dpkt pcap import Reader from scapy all import rdpcap from scapy all
  • [Ubuntu][网络][教程]端口转发以及端口管理

    1 平台介绍 Ubuntu 20 04 LTS Armv7 2 端口管理 进行端口转发之前 要先对端口进行一系列设置 2 1 安装ufw sudo apt install ufw 2 2 开启22端口 开启ufw之后 默认的22端口不会自动
  • 使用python连接数据库并且进行批量添加数据的操作

    1 搭建python的mysql环境 在cmd中进入C Python34 Scripts文件夹 输入pip install PyMySQL即可安装 python的插件安装基本都可以通过pip这个命令实现 2 写一个简单的脚本进行验证 关于p
  • C++ 膨胀与腐蚀(dilate、erode)

    参考 https blog csdn net poem qianmo article details 23710721 膨胀 函数 一般只需输前三个参数 输入图像 输出图像 卷积内核 void dilate InputArray src O
  • 使用canvas制作一个简单的验证码

    上一篇文章 简单的随机乱码生成 验证码生成 HTML 在上一篇文章中使用了随机乱码生成来制作了一个简单的验证码的功能 但是在上一篇文章中 使用的是将内容给到指定的div元素中 本次将内容给到canvas中 使用canvas绘制文字来做一个不
  • 【剑指Offer40】最小的k个数

    题目描述 2021 3 22 输入整数数组 arr 找出其中最小的 k 个数 例如 输入4 5 1 6 2 7 3 8这8个数字 则最小的4个数字是1 2 3 4 示例1 输入 arr 3 2 1 k 2 输出 1 2 或者 2 1 示例2
  • [ IntelliJ IDEA Java开发配置 : 不断完善中]

    推荐在看本文之前先阅读IntelliJ IDEA 官方文档 https www jetbrains com help idea install and set up intellij idea html 1 IDEA版本选择 版本选择 20
  • 服务器命令行常用的指令

    1 进入服务器 ssh p XXXXX 端口号 XXX 202 119 84 91 用户名 IP地址 2 查看当前所在路径里包含的文件 ls 3 查询绝对路径 pwd 4 编辑一个python文件 1 打开文件 vim demo py 2
  • 使用R语言中的scale_size函数调整数据点的大小范围

    使用R语言中的scale size函数调整数据点的大小范围 在R语言中 我们经常需要对数据进行可视化 其中包括调整数据点的大小以传达更多信息 scale size函数是一个非常有用的函数 可以帮助我们调整数据点的大小的度量范围 本文将介绍如
  • 跟hoowa学做智能路由(五):熟悉OpenWRT

    题记 呦呦鹿鸣 食野之苹 我有嘉宾 鼓瑟吹笙 从本章开始 我们要更多的了解系统的特性 以及不论是智能路由还是智能家居 我们用路由器的处理器到底能做多少事情 系统结构 在上一章我们已经完成了刷机工作 这个时候系统进行了首次启动 并且格式化了它
  • 基于“机器学习”的智能聊天机器人---python实现(1)

    本博文以自己课程设计为依托 介绍如何利用python语言编程实现基于 机器学习 的智能聊天机器人 由于本项目是自己首次接触python以及利用计算机编程实现小型项目 中途遇到诸多问题 自己也在其中收获很多 故想写一篇博文记录一下自己课程设计
  • H3C 查看设备路由表

    转载于 https www cnblogs com fanweisheng p 11156750 html
  • 毕业设计-基于深度学习的视觉多目标跟踪

    目录 前言 课题背景和意义 实现技术思路 一 基于深度学习的视觉多目标跟踪 二 基于深度学习的DBT算法 三 基于深度学习的JDT算法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做
  • mysql快速导入sql文件_MySQL高效导入多个.sql文件方法详解

    MySQL有多种方法导入多个 sql文件 里面是sql语句 常用的有两个命令 mysql和source 但是这两个命令的导入效率差别很大 具体请看最后的比较 还有sqlimport和LOAD DATA INFILE等导入方法 不过它们主要用