在实际工作中,有时需要导入大容量sql文件到MySQL,通常有以下三种方法:
(1)通过phpmyadmin,不推荐,有内存,限时等的限制,还容易出错或卡死;
(2)通过Navicat Premium工具运行sql,不推荐,效率低,易出错卡机;
(3)通过source命令导入,推荐,效率高,经测试,小编导入一个3.02G的文件耗时3分08秒;
下面,小编将整个过程进行重现,希望对大家有帮助。
连接和维护mysql有很多工具, 譬如著名的桌面软件navicat . 而phpMyAdmin是用php写的基于网页形式的mysql管理工具.
1 当你的网站部署到服务器后,很多服务器是禁止外部连接 mysql的.此时navicat 就作废了
2 phpmyadmin 可以和网站一起部署在服务器上.所以真实项目环境的mysql维护 就得靠他
3 如果是本地开发,这个玩意儿肯定是没有navicat方便的.
4 所以我们要学会在不同的环境下使用不同的工具来节约我们的成本.
主题:
如果我们使用phpmyadmin维护时,我们经常需要做数据库备份和恢复。
方案如下:
1 打开phpmyadmin安装目录下的config.inc.php . 譬如是 D:\wamp64\apps\phpmyadmin4.7.4\config.inc.php
2 找到 $cfg['UploadDir'] 这个字眼 (没有就自己加) //待导入数据目录
3 改成 $cfg['UploadDir'] = 'bbb'; //用bbb代表 告诉大家这个文件夹名是 随意写写的,不要写中文即可
4 然后 新建一个文件夹叫bbb ,譬如D:\wamp64\apps\phpmyadmin4.7.4\bbb
5 然后把你的大sql文件 放到这个bbb文件夹里,譬如20180418.sql
6 重启wamp环境,登录localhost/phpmyadmin,新建数据库,譬如“db_test”,选择dbtest,,点击“导入”,发现多了下面一行选项:
接下来就 开始导吧
如果超时
一般超时时间是300秒,如果超时就要去修改另外一个文件的配置. 找到 D:\wamp64\apps\phpmyadmin4.7.4\libraries\config.default.php (注意 :phpmyadmin的安装目录只是一个举例,你们装的不一定和我一样,不要死磕这个目录怎么找不到)
找到 $cfg['ExecTimeLimit'] ,并改为 $cfg['ExecTimeLimit'] = 0 代表无限时
然后重启各种服务即可
然而,当我们用phpmyadmin备份数据库生成的sql文件大于80M时就会出错,更别说数百M、过G的超大sql文件了.如之奈何?
方案如下:
在实际工作中,有时需要导入大容量sql文件到MySQL,通常有以下三种方法:
(1)通过phpmyadmin,不推荐,有内存,限时等的限制,还容易出错或卡死;
(2)通过Navicat Premium工具运行sql,不推荐,效率低,易出错卡机;
(3)通过source命令导入,推荐,效率高,经测试,小编导入一个3.02G的文件耗时3分08秒;
下面,小编将整个过程进行重现,希望对大家有帮助。
然而,使用source命令导入还有一个问题,sql文件中若是一条一条记录的导,INSERT插入语句过多,执行时也会严重影响导入数据的效率。所以,若想解决这样的问题,就需要在数据导出时使用 mysqldump 命令行操作了!!!
方案如下:
参考:
https://jingyan.baidu.com/article/b7001fe171a6980e7282dd8f.html
https://www.cnblogs.com/iosdev/archive/2013/03/06/2945903.html
1. 开始菜单 | 运行 | cmd |
2. 进入MySQL目录下的bin文件夹,cd MySQL中到bin文件夹的目录,如我输入的命令行:
d:
cd D:\wamp64\bin\mysql\mysql5.7.19\bin
3.导出数据库,mysqldump -h 服务器名 -u 用户名 -p 数据库名 > 导出的文件名 如我输入的命令行:
mysqldump -h 211.118.188.234 -u root -p db_ad > ad.sql
输入MySQL的密码后,Enter键即开始导出数据,默认导出目录既是第二步的bin目录下(如果导出单张表的话在数据库名后面输入表名即可,如:mysqldump -h 211.118.188.234 -u root -p db_ad tb_ad_type > xx.sql)
4. 导入数据则可以用 source 命令或 mysql 命令,source前面已经讲过,myslq命令如下:
mysql -h 服务器名-u 用户名 -p 数据库名 < 文件名.sql;如
注意事项:
打开MySQL安装目录下的my.ini文件,会发现有两个 max_allowed_packet 设置,保险起见最好都设置较大值: