在同一台服务器上导入两个具有相同架构(数据库名称)的不同 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 tablenameINSERT 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 合规性有关吗?在合并数据之前,您可能需要查看一下。