【问题标题】:Merge databases with similar but not identical tables into one MasterDB将具有相似但不相同表的数据库合并到一个 MasterDB
【发布时间】:2015-08-10 17:01:47
【问题描述】:

将多个数据库合并到一个具有不同但相似的表/视图和列的 MasterDB 的最佳方法是什么(SQL 代码或程序)?

只是表和视图,而不是数据。如果有关系,也要设置关系。

例子:

DB1    +    DB2   +    DB3        =         MasterDB

User        User       User                 User
 Id          Id         Id                   Id
 Name        Name       Name                 Name
 Address     City       Email                Address
                                             City
Posts       Posts      Comments              Email
 Id          Id         Id
 Title       Content    Title               Posts 
                                             Id  
                                             Title
                                             Content

                                            Comments
                                             Id
                                             Title

【问题讨论】:

  • 没有“最好”的方法。你手头有什么工具?你还试过什么?这些结构会定期变化吗?确切的数据库引擎是什么?
  • 您在这里使用的是 MySQL 还是 SQL Server?我认为您的问题的答案是针对特定产品的!
  • 我正在使用 MS SQL Server Management Studio。尝试使用 sp_msforeachdb 创建 SQL 脚本但失败。在处理不同但相似的项目时,这可能是在夜间运行的存储过程。
  • 如果您想在夜间作业中运行代码,最好的方式是编写自己的脚本。

标签: mysql sql sql-server database merge


【解决方案1】:

正如您所说,您使用的是 SQL Server Management Studio:

在 Management Studio 中,右键单击每个数据库,选择 Tasks>Generate Scripts...。通过向导,在设置脚本选项上,您可能希望关闭 USE 子句并确保所有相关对象都已编写脚本(默认情况下不触发)。针对 MasterDB 运行生成的脚本,查看并重复。

这样,您将有一个脚本将这些特定数据库导入该特定数据库中。不幸的是,这不是一个像 sp_mseachdb 'Export ?到 MasterDB'。

【讨论】:

  • 好主意!我试过了。但是很难让它工作,因为......首先它必须检查表/视图是否存在......如果不存在:创建它......然后检查每一列是否存在......如果不存在:创建它。 ..等等...对于每个数据库。
  • 嗯,这很可悲。似乎您可能会从数据库差异/补丁工具中受益。也许opendbiff.codeplex.comliquibase.org ?不幸的是,我对此类工具的经验非常有限,因此该评论很可能被视为离题。
  • 好的,我试试。无论如何感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2014-02-24
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
相关资源
最近更新 更多