有没有办法在所有现有数据库上执行导入,而不是像mysql -uusername -ppw db_name < dump.sql
那样指定每个数据库?具体来说,我想将所有表从一个数据库转移到每个其他数据库,所以我将它们转储,但由于我这里有大量数据库,我应该创建一个脚本还是有一个解决方法?我想避免编写脚本,因为数据库名称是加密的,因此它们类似于伪随机字符串。提前致谢
答案 0 :(得分:1)
没有像这样的内置,这是一个相当具体的情况,很容易解决。这可以是shell / bash中的单线程。检索数据库列表并将它们提供给循环以加载它们。
一个班轮:
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