繁体   English   中英

在同一台服务器上导入两个具有相同架构(数据库名称)的不同mysql转储文件

[英]Import two different mysql dump file with the same schema (database name) on the same server

我和我的团队正在努力纠正我们的前任所做的事情,这会破坏我们服务器的结构。 我们的前任在其上放置了许多具有相同数据库(数据库名称、表等)的服务器,每个服务器都包含其他服务器无法使用的数据。

例子:

服务器 1 包含客户信息但没有客户交易

服务器2没有客户信息但有客户交易

等等...

现在,我们正在努力纠正这些事情。 将 2 台服务器上的所有数据仅放在一台服务器上。

手头,我们有两个不同的 mysql 转储和一个服务器。

问题:是否可以导入具有相同数据库名称、表等的这两个 mysql 转储,但在已经拥有所述数据库的一台服务器上包含不同的数据?

我已经导入了大的mysql dump,所以我在等待你的确认。

我的服务器是 Ubuntu Server 16.04.3(使用最少的 gui)

带有 Mysql Workbench 的 Mysql Server 5.7

非常感谢...

更新

由于 mysql 转储仅包含CREATE TABLE tablenameINSERT INTO部分和 NO DROP TABLE IF IT EXIST tablename 我只是使用 OPTION 继续执行 mysql 转储以忽略错误(但不建议,当然,这取决于您的情况),因为我唯一关心的是从两个 mysql 转储中添加丢失的数据,唯一的我遇到的错误是“重复条目”,这非常适合我的情况。

谢谢。

默认情况下,转储文件只不过是一堆 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...);

请注意,它会为每个表做的第一件事是 DROP TABLE,然后重新创建 TABLE。

不要这样做!

如果您的表具有相同的名称,那么它会清除您迄今为止加载的数据。

我建议您创建一个新数据库并将转储文件加载到该数据库中。 这样即使表具有相同的名称,您也可以访问一个 MySQL 实例中的所有数据。 然后,您可以使用 SQL 运行跨数据库查询,以您想要的任何方式合并数据(例如使用多表 UPDATE 语句连接每个数据库中同名的每个表)。

我想知道为什么您的前数据库开发人员将数据分开......这可能与 Sarbanes-Oxley 合规性有关吗? 在合并数据之前,您可能需要调查一下。

暂无
暂无

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

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