如何将一个数据库中的行插入到其他数据库中的同一个表中?

时间:2018-03-15 20:28:48

标签: sql sql-server-2008 tsql

我试图将一个表中的一个特定行插入到具有相同名称但位于不同数据库中的其他表中,如下所示:

 Table Makers from database A

 id  | name | type | comments
 01    OSLO    A      None

 Table Makers from database B is empty but same structure as A
 id  | name | type | comments

 Table Makers from database C is empty but same structure as A and B
 id  | name | type | comments

我有一个查询来完成这项工作,但我需要手动更改数据库的名称,即。

Use database_B
Go
Insert into Makers
       ([id], [name], [type], [comments])
select [id], [name], [type], [comments] from database_A
where id = '01'

Use database_C
Go
Insert into Makers
       ([id], [name], [type], [comments])
select [id], [name], [type], [comments] from database_A
where id = '01'

是否有替代方法可以执行相同的过程而无需重复相同的插入代码?

欢迎提出改进此问题以使其更有价值的任何建议。

2 个答案:

答案 0 :(得分:1)

如果在同一服务器中同时拥有两个数据库,则可以使用语法[database].[schema].[table]来引用其他数据库中的表。这为您节省了use database_X句子,但您仍需要为每个目标表添加不同的插入内容。例如:

Insert into [database_C].[dbo].Makers ([id], [name], [type], [comments])
select [id], [name], [type], [comments] 
from [database_A].[dbo].Makers
where id = '01'

Insert into [database_B].[dbo].Makers ([id], [name], [type], [comments])
select [id], [name], [type], [comments] 
from [database_A].[dbo].Makers
where id = '01'

答案 1 :(得分:1)

如果您有一个表是主表,其余表只是副本,请考虑同义词。如果所有表都可以接受您希望传播的编辑,请考虑合并复制。如果不需要实时对齐并且批处理就足够了,请考虑使用多播转换的SSIS包。