首页 > 后端开发 > php教程 > MySQL 如何复制表 – 快速提示

MySQL 如何复制表 – 快速提示

WBOY
发布: 2024-08-21 21:03:15
原创
1070 人浏览过

最近我不得不处理我的数据库提供程序的一些限制,它不支持表重命名。所以我不得不手动复制一个表格。

我的 SaaS 平台的数据库托管在 Planetscale 上。该公司提供兼容 MySQL 的无服务器数据库。由于其无服务器特性,您可以获得水平分片、非阻塞模式更改以及许多更强大的数据库功能的强大功能,而无需实施它们。以及出色的开发者体验。

从另一个角度来看,您必须处理有关架构更改的一些约束。需要这些限制来保证分片环境中的一致性。

自从我成为客户(大约两年前)以来,他们取得了很大的进步,例如对外键约束的支持:https://planetscale.com/docs/concepts/foreign-key-constraints

重命名表

Inspector 是一个 Laravel 应用程序。使用 Laravel 迁移,我可以使用重命名函数来简单地更改表的名称:

Schema::rename('from', 'to');
登录后复制

Planetscale 本身不支持表重命名。所以我必须找到一个解决方法来完成任务。

说实话,重命名表是一个相当罕见的操作。对我来说,这是因为“项目”和“应用程序”实体之间的名称重叠。我不得不重命名项目 ->应用程序。

如何在 MySQL 中复制表

在 MySQL 中复制表有两种方法。

复制表结构

您可以仅复制没有数据的表结构(列、键、索引等),使用 CREATE TABLE … LIKE:

CREATE TABLE applications LIKE projects;
登录后复制

结果是创建了应用程序表,其结构与原始项目表完全相同,但没有数据。

要导入数据,您可以运行第二条语句 INSERT INTO … SELECT:

INSERT INTO applications SELECT * FROM projects;
登录后复制

在大表上运行此语句时要小心,因为它可能会占用大量时间和服务器资源。

仅重复列定义

第二个选项是仅复制列定义并使用 CREATE TABLE … AS SELECT 在一条语句中导入数据:

CREATE TABLE applications AS SELECT * FROM projects;
登录后复制

新的应用程序表仅继承项目表的基本列定义。它不会重复外键约束、索引和自动增量定义。

当您拥有与表名称相关的索引名称和键名称时,此选项可能很有用。更改表的名称必须替换约束的名称。你最好根本不要导入它们并重新进行。

资源

数据库始终是任何阶段开发者的热门话题。您可以在博客上找到其他技术资源。以下是有关该主题的最受欢迎的文章:

  • 已解决 - 违反完整性约束
  • 使用 Laravel 预加载节省 100 万次查询
  • 如何扩展 SQL 数据库
  • 已解决 – 使用 Laravel 队列和作业超出 MySQL 锁等待超时

督察新人?免费监控您的应用程序

Inspector是一款专为软件开发人员设计的代码执行监控工具。您不需要在服务器级别安装任何内容,只需安装 composer 包 就可以开始了。

与其他复杂的一体化平台不同,Inspector 超级简单,并且对 PHP 友好。您可以尝试我们的 Laravel 或 Symfony 包。

如果您正在寻找有效的自动化、深刻的见解以及将警报和通知转发到消息传递环境的能力,请免费尝试 Inspector。注册您的帐户。

或在网站上了解更多信息:https://inspector.dev

MySQL How To Duplicate A Table – Fast Tips

以上是MySQL 如何复制表 – 快速提示的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板