MYSQL数据库数据的导出导入问题

连接和维护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秒;

下面,小编将整个过程进行重现,希望对大家有帮助。

工具/原料

  • sql文件
  • MySQL可视化工具
方法/步骤

打开MySQL安装目录下的my.ini文件,添加max_allowed_packet,设置大小为1000M(视文件大小而定),如下:

在服务中重新启动MySQL服务,在命令行窗口[MYSQL console](命令:show VARIABLES like '%max_allowed_packet%';)查看是否修改成功:

选择要导入的数据库,然后使用source命令(source sql文件路径)导入sql文件,如下(我们可以看到,执行效率比较高):


之后就是等待导入完成,可在Navicat Premium工具中查看是否导入成功。

END

注意事项

  • max_allowed_packet的值过小可能会出现MySQL server has gone away问题;
  • 导入sql文件时编码应统一;



然而,使用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 设置,保险起见最好都设置较大值:



猜你喜欢

转载自blog.csdn.net/u012717614/article/details/79996173