sql-server - 将 SQL Server 数据库合并为 1

标签 sql-server database merge consolidation

我需要将 20 个具有相同结构的数据库合并为 1 个数据库。我看到了这个帖子: Consolidate data from many different databases into one with minimum latency

我不明白所有这些所以让我这样问:有些表有主键但没有 sourceID,例如:

数据库 1

AgencyID    Name 
1           Apple
2           Microsoft

数据库 2

AgencyID   Name
1          HP
2          Microsoft

很明显,这两个表不能像这样合并,它需要附加列:

数据库 1

Source     AgencyID    Name 
DB1        1           Apple
DB1        2           Microsoft

数据库 2

Source     AgencyID   Name
DB2        1          HP
DB2        2          Microsoft

如果这是这样做的正确方法,可以将这两个表合并到一个数据库中,如下所示:

Source     AgencyID    Name 
DB1        1           Apple
DB1        2           Microsoft
DB2        1           HP
DB2        2           Microsoft

...是否可以通过事务复制来实现?

预先感谢您的回答,如果我能得到正确的答案,那将非常有帮助。

伊利亚

最佳答案

如果我理解正确的话,你可以这样做

创建 DTS/SSIS 包。 这是一个 basic SSIS tutorial .

或者像直接运行SQL

 INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
 SELECT CAST('DB1' AS nvarchar(16)), [AgencyID], [Name]
 FROM [SourceDatabase1].dbo.[Agency]

 INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
 SELECT CAST('DB2' AS nvarchar(16)), [AgencyID], [Name]
 FROM [SourceDatabase2].dbo.[Agency]

然后通过 循环 SQL Server Job 调用 与一个 Job Step和一个 Schedule

不要忘记考虑如何检测哪一行已被复制到目标数据库。

关于sql-server - 将 SQL Server 数据库合并为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677959/

相关文章:

MYSQL 等效于 MS-Access 函数 first() last()

jquery - 在屏幕宽度上合并两个类

tfs - 在 TFS 中合并多个文件

sql - 运行存储过程

c# - EF 的 ExecuteSqlCommand 总是返回 -1

php - 如何在 SQL INSERT 语句中使用 PHP/HTML 中的变量

java - SQL-Java 数据类型映射

python - Sqlite - 如何使用更多的内存和缓存,并使其运行得更快

mysql 数据库设计和查询优化

c++ - 将n组文件组合在一起(随机且不重复)