SQL Server:是否可以将表脚本化为UPDATE?

时间:2016-11-24 11:36:46

标签: sql sql-server database sql-server-2008 sql-server-2012

无论如何,我需要将两个表导出/脚本到我的本地数据库。 无论如何,我无法将它们导出为INSERT INTO脚本,因为我无法将它们放在远程数据库中并再次填充它们(因为FK和完整性约束)。那么,是否可以将表脚本编写为每行的UPDATE语句,而不是INSERT INTO?我使用的是SQL Server 2008/2012

3 个答案:

答案 0 :(得分:1)

R.id.frame

答案 1 :(得分:1)

有许多方法可以在数据库之间同步数据。根据我的经验,您可以通过两种主要方式来做:

  1. 使用MERGE语句(它支持来自mssql 2k8:https://msdn.microsoft.com/en-us/library/bb510625.aspx

    • 编写动态查询以生成2个目标表的数据脚本: 从dbtarget.tbla中选择'select * into #tmp,其中1< 0;'作为数据 联盟 选择'插入#tmp值('+ convert(varchar,cola)+','+ convert(varchar,colb)+','+ convert(varchar,colc)+');'作为来自dbsource.tbla;
    • 的数据
    • 在数据库源上运行上面的查询以获取输出脚本数据。
    • 将脚本数据应用于目标数据库。
    • 使用MERGE语句在#tmp表和目标表之间合并数据。
  2. 利用日志传送功能在同一结构和一个域网络中的数据库之间同步数据。 https://msdn.microsoft.com/en-us/library/ms190640(v=sql.110).aspx

答案 2 :(得分:1)

非常感谢 Alfaiz Ahmed 这是我最后的工作脚本:

select 'UPDATE ERGO.DBO.RESIDENZE SET CODISEDERESI='+CONVERT(varchar(50),CODISEDERESI)+
                              ',DESCRIRESIDE='+isnull(CONVERT(varchar(100),''''+replace(DESCRIRESIDE,'''','''''')+''''),'''''')+
                              ',INDIRIRESIDE='+isnull(CONVERT(varchar(100),''''+replace(INDIRIRESIDE,'''','''''')+''''),'''''')+
                              ',NOMERESIDENZ='+isnull(CONVERT(varchar(50),''''+replace(NOMERESIDENZ,'''','''''')+''''),'''''')+
                              ',VIARESIDENZA='+isnull(CONVERT(varchar(50),''''+replace(VIARESIDENZA,'''','''''')+''''),'''''')+
                              ',CAPRESIDENZA='+isnull(CONVERT(varchar(50),''''+CAPRESIDENZA+''''),'''''')+
                              ',CITTARESIDEN='+isnull(CONVERT(varchar(50),''''+replace(CITTARESIDEN,'''','''''')+''''),'''''')+
                              ',EMAILRESIDEN='+isnull(CONVERT(varchar(100),''''+EMAILRESIDEN+''''),'''''')+
                              ' WHERE CODICERESIDE='+CONVERT(varchar(50),CODICERESIDE)
from RESIDENZE

我必须使用replace()函数,因为很多意大利名字在其名称中都有一个引号,所以,例如,我希望字符串D'AZEGLIO成为D''AZEGLIO才能正确使用由SQL处理。最后,在执行查询之前,我按CTRL+SHIFT+F将输出保存为sql文件作为生成的脚本。