我正在通过网络将MySQL从*.sql文件导入到多个数据库位置。我正在使用cmd批处理文件来运行命令,它正在按我的预期工作。但是,我注意到,与联机的IP相比,在任何脱机IP上导入的时间都要长一些。以下是这两个进程的持续时间:
每个进程都执行两个命令,一个是导入一个*.sql文件,另一个是引用一个*.txt文件来更新我导入的*.sql文件所在的位置上的一个表。
Command 1:
mysql.exe -h 192.xxx.xxx.xxx -P 3306 -u root -pxxxx db < C:\xxx\data\xxx.sql
Command 2:
mysql.exe -h 192.xxx.xxx.xxx -P 3306 -u root -pxxxx db < update.txt
这些命令在一个批处理文件中重复大约20次,获得脱机数据库的可能性很高。如果我幸运的话,我只会得到一个或两个离线位置,但所有的数据库一次在线是极不可能的。*.sql文件的大小只有45 is,所以导入实际上是快速的。
我的问题是,如何跳过离线位置?
发布于 2019-11-08 01:43:50
有了Akina的一些建议,在执行MySQL导入命令之前,我可以找到一篇文章,介绍如何确定IP是否在线。以下是答案的链接:https://stackoverflow.com/a/21252613/10910692
下面是我在批处理文件中使用的代码:
ping -n 1 192.xxx.xxx.xx | find "TTL=" >nul
if errorlevel 1 (
echo host is offline..
) else (
echo Updating host...
mysql.exe -h 192.xxx.xxx.xx -P -u -p inventory < C:\xxx\data\xxx.sql
)
我还采纳了Akina的建议,将导入和更新查询连接到一个文件中,只需要为更新调用该文件。正如我在问题中提到的,上面的代码重复了大约20次。
如果我坚持以前的方法,假设所有IP都离线,那么批处理文件将需要大约800 secs = 13-14分钟才能完成处理,而使用上面的方法,只需1-2分钟!(假设每个命令最大5秒,而实际上每个命令少于5秒)。
https://dba.stackexchange.com/questions/252710
复制相似问题