在同一台服务器上导入两个具有相同架构(数据库名称)的不同 mysql 转储文件
Import two different mysql dump file with the same schema (database name) on the same server
我和我的团队正在努力纠正我们的前任所做的事情,这些事情正在破坏我们的服务器结构。我们的前身放置了很多服务器,上面有相同的数据库(数据库名称,表等),每个服务器都包含其他服务器不可用的数据。
Example:
Server 1 contains customer information but no customer transaction
Server 2 has no customer information but has customer transaction
等等...
现在,我们正在努力纠正这些问题。将两台服务器的数据全部放到一台服务器上。
手头上,我们有两个不同的 mysql 转储和一个服务器。
问题:是否可以导入这两个 mysql 具有相同数据库名称、表等的转储,但在一台已拥有该数据库的服务器上包含不同的数据?
我已经导入了最大的 mysql 转储,所以我正在等待您的确认。
我的服务器是 Ubuntu 服务器 16.04.3(具有最小的图形用户界面)
Mysql 服务器 5.7 Mysql Workbench
非常感谢...
更新
因为 mysql 转储仅包含 CREATE TABLE tablename
和 INSERT INTO
部分并且没有 DROP TABLE IF IT EXIST tablename
。我只是继续执行带有选项的 mysql 转储以忽略错误(但当然不可取,这取决于您的情况),因为我唯一关心的是从两个 mysql 转储,我遇到的唯一错误是 "Duplicate entry",这非常适合我的情况。
谢谢。
默认情况下,转储文件只不过是一堆 SQL 语句,如下所示:
--
-- Table structure for table `foo`
--
DROP TABLE IF EXISTS `foo`;
CREATE TABLE `foo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
...other columns...
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `foo`
--
INSERT INTO `foo` VALUES (...lots of rows of data...);
请注意,它将为每个 table 做的第一件事是 DROP TABLE,然后重新创建 TABLE。
不要这样做!
如果您的 table 具有相同的名称,那么它将清除您目前加载的数据。
我建议您创建一个新数据库并将转储文件加载到其中。然后,即使 table 具有相同的名称,您也可以访问一个 MySQL 实例中的所有数据。然后,您可以使用 SQL 到 运行 跨数据库查询以您想要的任何方式合并数据(例如使用 multi-table UPDATE 语句连接每个 table每个数据库中的名称)。
我想知道为什么您的前数据库开发人员将数据分开...这可能与 Sarbanes-Oxley 合规性有关吗?在合并数据之前,您可能需要查看一下。
我和我的团队正在努力纠正我们的前任所做的事情,这些事情正在破坏我们的服务器结构。我们的前身放置了很多服务器,上面有相同的数据库(数据库名称,表等),每个服务器都包含其他服务器不可用的数据。
Example:
Server 1 contains customer information but no customer transaction
Server 2 has no customer information but has customer transaction
等等...
现在,我们正在努力纠正这些问题。将两台服务器的数据全部放到一台服务器上。
手头上,我们有两个不同的 mysql 转储和一个服务器。
问题:是否可以导入这两个 mysql 具有相同数据库名称、表等的转储,但在一台已拥有该数据库的服务器上包含不同的数据?
我已经导入了最大的 mysql 转储,所以我正在等待您的确认。
我的服务器是 Ubuntu 服务器 16.04.3(具有最小的图形用户界面)
Mysql 服务器 5.7 Mysql Workbench
非常感谢...
更新
因为 mysql 转储仅包含 CREATE TABLE tablename
和 INSERT INTO
部分并且没有 DROP TABLE IF IT EXIST tablename
。我只是继续执行带有选项的 mysql 转储以忽略错误(但当然不可取,这取决于您的情况),因为我唯一关心的是从两个 mysql 转储,我遇到的唯一错误是 "Duplicate entry",这非常适合我的情况。
谢谢。
默认情况下,转储文件只不过是一堆 SQL 语句,如下所示:
--
-- Table structure for table `foo`
--
DROP TABLE IF EXISTS `foo`;
CREATE TABLE `foo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
...other columns...
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `foo`
--
INSERT INTO `foo` VALUES (...lots of rows of data...);
请注意,它将为每个 table 做的第一件事是 DROP TABLE,然后重新创建 TABLE。
不要这样做!
如果您的 table 具有相同的名称,那么它将清除您目前加载的数据。
我建议您创建一个新数据库并将转储文件加载到其中。然后,即使 table 具有相同的名称,您也可以访问一个 MySQL 实例中的所有数据。然后,您可以使用 SQL 到 运行 跨数据库查询以您想要的任何方式合并数据(例如使用 multi-table UPDATE 语句连接每个 table每个数据库中的名称)。
我想知道为什么您的前数据库开发人员将数据分开...这可能与 Sarbanes-Oxley 合规性有关吗?在合并数据之前,您可能需要查看一下。