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文件的方法,希望能帮助到大家

本文标题: MySQL高效导入多个.sql文件方法详解

本文地址: http://www.cppcns.com/shujuku/mysql/241550.html

mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解相关推荐

  1. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

  2. mysql order by 语句_Mysql优化order by语句的方法详解

    本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...

  3. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  4. 搜狗总收录批量查询教程 如何有效提高搜狗总收录的方法详解

    搜狗收录方法在SEO优化中一直是挺困扰各位站长的,虽然各个搜索引擎对收录的标准不一样,但搜狗搜索为什么收录比较困难?搜狗不收录的原因很简单:1.网站历史有不良优化记录2.网站页面确实不达标3.域名权重 ...

  5. mysql日期比较大小 方式_mysql中日期比较大小方法详解

    在mysql中日期比较有许多的函数,下面我来给大家总结一下常用的mysql中日期比较大小有需要了解的朋友可进入参考参考,假如有个表product有个字段add_time,它的数据类型为datetime ...

  6. php mysql连续签到跨月_PHP连续签到功能实现方法详解

    本文实例讲述了PHP连续签到功能实现方法.分享给大家供大家参考,具体如下: require "./global.php"; $act = isset($_GET['act']) ? ...

  7. 关于MySQL的存储函数(自定义函数)的定义和使用方法详解

    存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法: create function 函数([函数参数[,-.]]) Returns 返回类型 Begin ...

  8. mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解

    前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...

  9. mysql导入sql文件方法

    mysql导入sql文件方法 1.利用navicat客户端导入 2.cmd导入sql文件 1.利用navicat客户端导入 右键点击表,选择运行SQL文件. 选择emp.sql文件,编码选择UTF8, ...

最新文章

  1. BIEE-CSS样式大全
  2. Connecting the Dots: 应用于主动单目深度估计的深度学习模型(CVPR2019)
  3. syslog-ng+loganalyzer log system install guide
  4. 网络报错:“The connection is not for this device.”
  5. 不懂编程可以自学python吗-给初学python的朋友的一些忠告和建议
  6. mongo基础---增删改查
  7. linux redis -p,linux 安装redis
  8. Android ROM定制 入门到精通(含改机、移植、破解网络层、root原理、植入hook框架,反安全监测等)
  9. Android -- 短信
  10. winform插入时间类型数据到oracle数据库,winform操作访问Oracle 10g数据库,并自动填充到DataGridView...
  11. 17 软件源_9成职场人支持“准点下班”,2020年度职场报告:工作是最大焦虑源
  12. #Java小案例 随机产生数
  13. mysql optimizer mrr_MySQL优化器功能开关optimizer_switch
  14. Java的ATM界面任务台选择同时有文本和数据库登陆注册
  15. Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
  16. MySql锁机制:共享锁、排它锁;行锁、表锁、页锁;
  17. 吴伯凡-认知方法论-我的休息
  18. OA系统项目实施的难点和解决办法
  19. php 微信公众号开发,基于 PHP 的微信公众平台开发
  20. 各编程语言中的注释格式

热门文章

  1. net, 哥已心灰意冷
  2. 用计算机怎样做小玩具,幼儿园手工:用纸板做芭比电脑
  3. PFCdocumentation_ PFC examples
  4. 前端面试题全方位总结
  5. 打造小程序B2B水果集采平台,果联科技获千万元天使轮融资...
  6. APP广告变现渠道有哪些?开发者该如何选择?
  7. Jupyter Notebook 与 Markdown 知识点汇总
  8. CCNA笔记之距离矢量
  9. 什么是集群?看完这篇你就知道了
  10. 基于nodejs商城系统开发与设计(项目源码+论文设计+ppt答辩+视频录制)