在mysql数据库中复制模式,而不转储sql文件并执行它们。
如果有几种方法可以完成此任务,那就太好了。
有几种方法可以通过执行转储程序生成的sql来转储数据库并将其导入。
但是我想做的是执行一个命令copy schema abc to abc_bk
,然后完成。
因为我必须通过phpmyadmin并转储所有字段并重新导入它们,这非常耗时。
有一条声明:
CREATE TABLE <name> LIKE <othername>;
但是您必须一次做一张桌子。没有一个单一的语句可以对模式中的所有表执行此操作。
您可以从INFORMATION_SCHEMA.TABLES获取表列表:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = <old-schema>;
然后对于该查询返回的每个表,运行以下语句:
CREATE TABLE <new-schema>.<table-name> LIKE <old-schema>.<table-name>;
您必须编写一些代码来执行循环以完成此操作。
发表您的评论:
如果还想复制数据,则可以使用INSERT ... SELECT。
INSERT INTO <new-schema>.<table-name>
SELECT * FROM <old-schema>.<table-name>;
这将花费一段时间,这与表中需要更新的行数和索引数成正比(也就是说,写每行的成本乘以索引数)。
注意,这会锁定在INSERT ... SELECT运行时从旧表读取的行。如果您需要在此过程中继续写入旧表,建议您使用pt-archiver或pt-table-sync进行复制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句