寻找一种同步查找 table 数据的工具,而不是仅仅创建 INSERT 语句
Looking for a tool that Sync lookup table data as opposed with just creating INSERT statemenents
我正在使用 SSDT 创建数据填充脚本。 SSDT 在 table.
中的每一行创建一个 INSERT 语句
问题是一些查找数据行已经存在于目标数据库中。因此 INSERT 语句会产生 PK 违规错误。
此外,有些行需要更新,而不是 INSERT。
是否有任何工具(希望是免费的)允许我同步(或合并)查找数据。如果没有该工具,我的数据填充脚本将非常具有挑战性和耗时。
SQL RedGate 的数据比较是其中之一,可免费试用 30 天。您可以使用 GUI ad-hoc 或命令行界面来自动更新。该产品并非没有缺点,但它可能非常有用。
使用 sp_generate_merge
生成您放入 post-部署脚本中的脚本。
编辑
如果您使用 SSDT 来填充查找 table,请不要使用单独的 INSERT、UPDATE 和 DELETE 语句,而是使用 MERGE:
merge into dbo.Colors as target
using (
values
-- Id , Code , Name
( 1 , 'RED' , N'Red' ),
( 2 , 'YELLOW' , N'Yellow' ),
( 3 , 'GREEN' , N'Green' ),
( 4 , 'BLUE' , N'Blue' )
) as source (Id, Code, Name) on target.Id = source.Id
when matched then
update set
Code = source.Code ,
Name = source.Name
when not matched by target then
insert (Id, Code, Name)
values (Id, Code, Name)
when not matched by source then
delete;
我正在使用 SSDT 创建数据填充脚本。 SSDT 在 table.
中的每一行创建一个 INSERT 语句问题是一些查找数据行已经存在于目标数据库中。因此 INSERT 语句会产生 PK 违规错误。
此外,有些行需要更新,而不是 INSERT。
是否有任何工具(希望是免费的)允许我同步(或合并)查找数据。如果没有该工具,我的数据填充脚本将非常具有挑战性和耗时。
SQL RedGate 的数据比较是其中之一,可免费试用 30 天。您可以使用 GUI ad-hoc 或命令行界面来自动更新。该产品并非没有缺点,但它可能非常有用。
使用 sp_generate_merge
生成您放入 post-部署脚本中的脚本。
编辑
如果您使用 SSDT 来填充查找 table,请不要使用单独的 INSERT、UPDATE 和 DELETE 语句,而是使用 MERGE:
merge into dbo.Colors as target
using (
values
-- Id , Code , Name
( 1 , 'RED' , N'Red' ),
( 2 , 'YELLOW' , N'Yellow' ),
( 3 , 'GREEN' , N'Green' ),
( 4 , 'BLUE' , N'Blue' )
) as source (Id, Code, Name) on target.Id = source.Id
when matched then
update set
Code = source.Code ,
Name = source.Name
when not matched by target then
insert (Id, Code, Name)
values (Id, Code, Name)
when not matched by source then
delete;