无论如何,我需要将两个表导出/脚本到我的本地数据库。 无论如何,我无法将它们导出为INSERT INTO脚本,因为我无法将它们放在远程数据库中并再次填充它们(因为FK和完整性约束)。那么,是否可以将表脚本编写为每行的UPDATE语句,而不是INSERT INTO?我使用的是SQL Server 2008/2012
答案 0 :(得分:1)
R.id.frame
答案 1 :(得分:1)
有许多方法可以在数据库之间同步数据。根据我的经验,您可以通过两种主要方式来做:
使用MERGE语句(它支持来自mssql 2k8:https://msdn.microsoft.com/en-us/library/bb510625.aspx)
利用日志传送功能在同一结构和一个域网络中的数据库之间同步数据。 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文件作为生成的脚本。