mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解
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文件方法详解相关推荐
- java读写json格式的文件方法详解.txt,并批量存储进redis
捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...
- mysql order by 语句_Mysql优化order by语句的方法详解
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...
- mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界
本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...
- 搜狗总收录批量查询教程 如何有效提高搜狗总收录的方法详解
搜狗收录方法在SEO优化中一直是挺困扰各位站长的,虽然各个搜索引擎对收录的标准不一样,但搜狗搜索为什么收录比较困难?搜狗不收录的原因很简单:1.网站历史有不良优化记录2.网站页面确实不达标3.域名权重 ...
- mysql日期比较大小 方式_mysql中日期比较大小方法详解
在mysql中日期比较有许多的函数,下面我来给大家总结一下常用的mysql中日期比较大小有需要了解的朋友可进入参考参考,假如有个表product有个字段add_time,它的数据类型为datetime ...
- php mysql连续签到跨月_PHP连续签到功能实现方法详解
本文实例讲述了PHP连续签到功能实现方法.分享给大家供大家参考,具体如下: require "./global.php"; $act = isset($_GET['act']) ? ...
- 关于MySQL的存储函数(自定义函数)的定义和使用方法详解
存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法: create function 函数([函数参数[,-.]]) Returns 返回类型 Begin ...
- mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解
前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...
- mysql导入sql文件方法
mysql导入sql文件方法 1.利用navicat客户端导入 2.cmd导入sql文件 1.利用navicat客户端导入 右键点击表,选择运行SQL文件. 选择emp.sql文件,编码选择UTF8, ...
最新文章
- BIEE-CSS样式大全
- Connecting the Dots: 应用于主动单目深度估计的深度学习模型(CVPR2019)
- syslog-ng+loganalyzer log system install guide
- 网络报错:“The connection is not for this device.”
- 不懂编程可以自学python吗-给初学python的朋友的一些忠告和建议
- mongo基础---增删改查
- linux redis -p,linux 安装redis
- Android ROM定制 入门到精通(含改机、移植、破解网络层、root原理、植入hook框架,反安全监测等)
- Android -- 短信
- winform插入时间类型数据到oracle数据库,winform操作访问Oracle 10g数据库,并自动填充到DataGridView...
- 17 软件源_9成职场人支持“准点下班”,2020年度职场报告:工作是最大焦虑源
- #Java小案例 随机产生数
- mysql optimizer mrr_MySQL优化器功能开关optimizer_switch
- Java的ATM界面任务台选择同时有文本和数据库登陆注册
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
- MySql锁机制:共享锁、排它锁;行锁、表锁、页锁;
- 吴伯凡-认知方法论-我的休息
- OA系统项目实施的难点和解决办法
- php 微信公众号开发,基于 PHP 的微信公众平台开发
- 各编程语言中的注释格式