mysql执行sql多导致挂机_MySQL-- 批处理执行多个sql脚本恢复数据

目录

方法1 不推荐

方法2 不推荐

方法3 DOS环境下(推荐)

若方法3执行批处理文件出现'****' 不是内部或外部命令的解决方案

小技巧:在Mysql中取消和关联外键约束

数据恢复或插入,必须注重数据源和数据目的地的编码一致性,否则会出现数据乱码问题

方法1 不推荐

若有SQL脚本a.sql, b.sql, 其目录在F盘根目录下, 则可再写一个SQL脚本c.sql(假设其目录也在F盘根目录下, 也可以在其他路径下)如下:

source f:/a.sql;

source f:/b.sql;

......

然后执行source f:/c.sql 即可.,注意:路据要提供全路径[绝对路径]

方法2 不推荐

恢复xls、xlsx、txt或csv格式的数据文件,也可写一个SQL脚本如下:

SET FOREIGN_KEY_CHECKS=0;

load data local infile '[文件全路径/.文件后缀名]' into table [相对应的数据库表名] fields terminated by '\t';

......

SET FOREIGN_KEY_CHECKS=1;

方法3 DOS环境下(推荐)

方法1和方法2的不便之处在于, 要为每个脚本写一句代码, 若有成千上万个, 这样写便不现实. 此时, 可用批处理来实现. 批处理文件后缀名为.bat,需放置在与多个sql脚本目录的平级目录下, 如多个sql脚本目录为F:\all_sql目录下,则批处理文件.bat需放置在F:\下,其批处理代码如下:

::echo off ::

@echo off

echo 开始执行数据库脚本...

for %%i in ([目录的相对路径]\*.sql) do (

echo 正在执行 %%i 请稍后...

echo set names utf8;>all.sql

echo source %%i>>all.sql

mysql -h[IP地址] -u[用户名] -p[密码] --max_allowed_packet=1048576 --net_buffer_length=16384 [数据库名]< all.sql

echo %%i 执行完毕。

)

del all.sql

echo 所有脚本执行完毕。

pause

注意:

1. 目录的相对路径,如sql脚本放在all_sql目录下,那相对路径就可以写成:all_sql\*.sql;

2. do后面的左括号要跟在do后, 若放在do的下一行, 则出会出现一闪而过的情况

3. all.sql只是作为临时缓冲sql脚本,多个sql脚本信息暂时缓冲到all.sql脚本中,从而all.sql脚本把数据信息更新到数据库中,全部数据更新完后,删除all.sql临时缓冲脚本文件;临时缓冲sql脚本名称可自定义

4. ip如果为本地,可以不写-h参数

若方法3执行批处理文件出现'****' 不是内部或外部命令的解决方案

右键点击:“我的电脑”-“属性”-“高级”-“环境变量”-“系统变量”-双击“Path”

将mysql的路径“D:\[MySQL安装全路径]\bin,添加进去-“确定”

注意:系统变量Path中明明配置了MySQL的安装路径,为什么还是出现“不是内部或外部命令”的情况,那是因为系统没有识别到的原因,可添加系统变量MYSQL_HOME,方法如下

4391a53992ee1f2321cbeff9c242e053.png

安装路径换成自己电脑上MySQL的安装路径

1fde467b9b9669a3dddbf39e43612348.png

在Path中加入如下所示:%MYSQL_HOME%\bin

9f1b0551aba1cc262111f27a1a521b36.png

4dd56694bc69b77b58c61037d7595fd8.png

到此完成

小技巧:在Mysql中取消和关联外键约束

SET FOREIGN_KEY_CHECKS=0; -- 取消外键约束,放在数据恢复或插入前

SET FOREIGN_KEY_CHECKS=1; -- 设置外键约束,放在数据恢复或插入完成后

在方法1和方法3中都应该先把数据表间的外键约束取消(设置为:0),等数据恢复或插入完成后,再把数据表间的外键约束关联起来(设置为:1),防止数据表间因外键约束,而无法正确恢复或插入数据,办法很简单,在此不再叙述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值