gpt4 book ai didi

mysql - 如何在mysql数据库中复制模式

转载 作者:行者123 更新时间:2023-12-05 05:01:13 25 4
gpt4 key购买 nike

目标

在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-archiverpt-table-sync进行复制。

关于mysql - 如何在mysql数据库中复制模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62806808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com