如何将sql转储导入MySQL中的所有数据库?

时间:2017-10-04 10:16:03

标签: mysql sql database

有没有办法在所有现有数据库上执行导入,而不是像mysql -uusername -ppw db_name < dump.sql那样指定每个数据库?具体来说,我想将所有表从一个数据库转移到每个其他数据库,所以我将它们转储,但由于我这里有大量数据库,我应该创建一个脚本还是有一个解决方法?我想避免编写脚本,因为数据库名称是加密的,因此它们类似于伪随机字符串。提前致谢

2 个答案:

答案 0 :(得分:1)

没有像这样的内置,这是一个相当具体的情况,很容易解决。这可以是shell / bash中的单线程。检索数据库列表并将它们提供给循环以加载它们。

  • 使用以下设置默认用户:
  • mysql_config_editor set -u username -p
  • 输入您的密码

一个班轮:

mysql -NBe "select schema_name from information_schema.schemata where schema_name not in ('mysql','performance_schema','sys','information_schema','others...')" | while read dbname ; do date; echo "loading $dbname"; mysql $dbname < dump.sql"; done 

格式化为可读性的块:

  

mysql -NBe“从information_schema.schemata中选择schema_name   schema_name不在('mysql','performance_schema','sys',   'information_schema','others ......')“| while read dbname; do
  日期;
  echo“loading $ dbname”;
  mysql $ dbname&lt; dump.sql“;
  完成了

具体取决于“一吨”数据库的确切数量和可用资源,将列表拆分为2,然后运行2个并发会话。

答案 1 :(得分:0)

你可以用Java或php编写一个脚本,在那里你不断改变db名称,脚本将导入所有db中的sql文件。你可以看看下面的问题 - Importing .sql file into MySQL using Java code