【问题标题】:Updating from one database to another SQL Server 2012 [closed]从一个数据库更新到另一个 SQL Server 2012 [关闭]
【发布时间】:2014-07-22 04:41:58
【问题描述】:

我想弄清楚如何更新表格。在那一刻,我让它截断表格,然后将所有记录重新插入其中(如下所示)。

我想要实现的是它只更新新记录,所以如果从 DATABASE2 中删除一条记录,它仍然保存在 DATABASE1 中。

TRUNCATE TABLE [DATABASE1].dbo.[TABLE1];

INSERT INTO [DATABASE].dbo.[DB1]
   SELECT * 
   FROM [SERVER2].[DATABASE2].dbo.[TABLE1];

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 即使您摆脱了插入问题,由于没有指定条件,您仍然无法仅获得“新记录”。所有数据都将被复制。希望您了解什么是来说!
  • "但是如果我删除一条记录,它就会从 DATABASE1 中消失"??当然会的。你还有什么期待?
  • 我认为我们这里没有什么有用的东西!

标签: sql sql-server sql-server-2012


【解决方案1】:

让我重新澄清一下您要存档的内容,基本上您要刷新来自 server2 的数据,如果它具有新值。

如果是,则不要直接删除table1中的所有内容

TRUNCATE TABLE [DATABASE1].dbo.[TABLE1];

改为

DELETE FROM [DATABASE1].dbo.[TABLE1]
INNER JOIN [SERVER2].[DATABASE2].dbo.[TABLE1] ON /* primary mapping here*/

这样你只会删除 server2 中存在的所有记录。

然后,对于您的插入语句

INSERT INTO [DATABASE].dbo.[DB1]
SELECT X.* 
FROM [SERVER2].[DATABASE2].dbo.[TABLE1] X
LEFT JOIN [DATABASE].dbo.[DB1] Y ON /* primary mapping here*/
WHERE Y.{primary key} IS NULL

所以那些在 server1 中丢失的记录不会被触及,不管有没有。 其余数据正在刷新。

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多