我和我的团队正在努力纠正我们的前任所做的事情,这正在破坏我们服务器的结构。我们的前任将许多服务器放在同一个数据库上(数据库名称,表等),每个服务器包含另一个不可用的数据。
示例:
服务器1包含客户信息,但没有客户交易
服务器2没有客户信息,但有客户交易
依旧......
现在,我们正在努力纠正这些事情。将所有数据从2台服务器放到一台服务器上。
总之,我们有两个不同的mysql转储和一个服务器。
问题:使用相同的数据库名称,表格等导入这两个mysql转储是否可以,但是在已经拥有所述数据库的服务器上包含不同的数据?
我已经导入了mysql转储中的一个,所以我在等待你的确认。
我的服务器是Ubuntu Server 16.04.3(带有最小的gui)
使用Mysql Workbench的Mysql Server 5.7
非常感谢...
更新
由于mysql转储仅包含EXPLAIN
和CREATE TABLE tablename
部分以及NO INSERT INTO
。我只是继续执行带有OPTION的mysql转储来忽略错误(当然,这取决于你的情况,这是不可取的),因为我唯一关心的是只从两个mysql转储中添加缺少的数据,这是唯一的我遇到的错误是"重复条目",这对我的情况来说是完美的。
感谢。
答案 0 :(得分:1)
默认情况下,转储文件只不过是一堆像这样的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,然后重新创建表。
不要这样做!
如果您的表名称相同,那么它将清除您目前已加载的数据。
我建议您创建一个新数据库并将转储文件加载到该数据库中。然后,即使表具有相同的名称,您也可以访问一个MySQL实例中的所有数据。然后,您可以使用SQL运行跨数据库查询,以您想要的任何方式合并数据(例如,加入每个数据库中每个同名表的多表UPDATE语句)。
我想知道为什么你以前的数据库开发人员将数据分开了......它是否与Sarbanes-Oxley合规性有关?您可能希望在合并数据之前查看它。