首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MySQL导入中跳过网络上的脱机数据库?

如何在MySQL导入中跳过网络上的脱机数据库?
EN

Database Administration用户
提问于 2019-11-07 03:46:38
回答 1查看 237关注 0票数 0

我正在通过网络将MySQL从*.sql文件导入到多个数据库位置。我正在使用cmd批处理文件来运行命令,它正在按我的预期工作。但是,我注意到,与联机的IP相比,在任何脱机IP上导入的时间都要长一些。以下是这两个进程的持续时间:

  1. 如果联机:7-8秒平均/处理
  2. 如果脱机: 40秒平均/进程

每个进程都执行两个命令,一个是导入一个*.sql文件,另一个是引用一个*.txt文件来更新我导入的*.sql文件所在的位置上的一个表。

代码语言:javascript
运行
复制
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,所以导入实际上是快速的。

我的问题是,如何跳过离线位置?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-11-08 01:43:50

有了Akina的一些建议,在执行MySQL导入命令之前,我可以找到一篇文章,介绍如何确定IP是否在线。以下是答案的链接:https://stackoverflow.com/a/21252613/10910692

下面是我在批处理文件中使用的代码:

代码语言:javascript
运行
复制
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秒)。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/252710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档