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

Is there any way to import database table schema only

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

#1050 - Table 'XXXXXX' already exists

如何只正确导入 table 结构?

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

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

使用ALTER命令

使用ALTER命令修改table结构。这里的 sql 将 age not nullable age 字段添加到 users table.

ALTER TABLE users ADD age int(11) not null

重新创建table

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

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

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

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

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

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

的小软件