【发布时间】:2011-06-03 03:48:48
【问题描述】:
假设我有两个带有一些复杂表结构的 MySQL 数据库。两个数据库都没有相同的表名。假设这些表不包含任何行(它们包含,但我可以截断表,数据现在并不重要,只是测试东西)。可以说我需要将这两个数据库合并为一个。例如:
DB1:
城市 状态
DB2:
索引 子索引 帖子
我想最终得到一个包含以下内容的数据库:
城市 状态 指数 子索引 帖子
这可能吗?
【问题讨论】:
假设我有两个带有一些复杂表结构的 MySQL 数据库。两个数据库都没有相同的表名。假设这些表不包含任何行(它们包含,但我可以截断表,数据现在并不重要,只是测试东西)。可以说我需要将这两个数据库合并为一个。例如:
DB1:
城市 状态
DB2:
索引 子索引 帖子
我想最终得到一个包含以下内容的数据库:
城市 状态 指数 子索引 帖子
这可能吗?
【问题讨论】:
您可以在其中一个数据库的所有表上使用RENAME TABLE。
见:http://dev.mysql.com/doc/refman/5.0/en/rename-table.html
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
如果没有重复。
【讨论】:
您使用的是哪个存储引擎?
如果使用 myISAM,您是否尝试过将代表表的 3 个文件(*.frm、*.myd、*.myi)从一个 DB 目录(在 mysql/data/db1 下)复制到另一个(在 mysql/data 下) /db2)?
【讨论】:
如果您有 mySQL 管理员甚至 phpmyadmin,这应该很简单。
使使用数据库的任何应用程序脱机(以确保没有任何更改),使用众多导出选项之一编写数据库脚本,并确保编写数据、架构和任何其他属性的脚本,而不是任何 DATABASE CREATE 语句。
在第二个数据库上运行脚本。
注意:只有当您 100% 确定两个数据库上没有架构重叠时,才应运行此选项!!!!
【讨论】:
是的,我认为这是可能的。您需要做的就是将 2 个表导出到 sql 脚本,将一个表名替换为另一个;附加脚本并运行一次
【讨论】: