繁体   English   中英

有没有办法只导入数据库表模式

[英]Is there any way to import database table schema only

我有两个数据库。 现在我试图将所有表模式仅从第一个数据库导入到第二个数据库。 我已经使用 phpmyadmin 从第一个数据库中导出了所有表结构。 但是我无法在第二个数据库中导入表结构。 phpmyadmin 说

#1050 - 表 'XXXXXX' 已经存在

如何仅正确导入表结构?

注意:两个数据库具有相同的表,并且所有表具有相同的结构。 我更改了第一个数据库中的一些表结构,我现在记不清了。 现在我只需要合并两个表结构。 此外,两个数据库都包含不同的数据集,我无法承受这两个数据库的任何数据丢失。

在执行任何命令之前,我建议您进行完整的数据库备份,否则您可能会失去几天的睡眠。

使用ALTER命令

使用ALTER命令修改表结构。 这是将年龄不可为空的年龄字段添加到用户表的 sql。

ALTER TABLE users ADD age int(11) not null

重新创建表

我不会推荐这种方法,因为你会丢失数据。 删除旧表,然后使用新模式创建。

DROP TABLE mytable;
CREATE TABLE mytable (
  ...
);

或者,如果您想保留数据,您可以:

  1. 将表复制或重命名为不同的名称。
  2. 使用新架构创建一个新表。
  3. 从旧表复制数据: INSERT INTO newtable SELECT * FROM oldtable

重命名表可能会导致关系问题。 我建议尽可能使用ALTER命令。 您还可以查看方案迁移(又名:代码优先迁移、数据库迁移)。

你可以试试 MySQL 工作台; 它允许你

  • 从 MySQL 数据库创建架构。
  • 通过对 db 版本 3 进行逆向工程,将模式导入 MySQL 工作台,
  • 然后将其与 db version 1 中的 schema 进行比较以生成 SQL alter 脚本。

主要问题是合并表格。 为了识别两个表之间的差异,我使用了一个名为SQL Power Architect的小软件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM