【问题标题】:Add the Latest rows into a table from another将最新行添加到另一个表中
【发布时间】:2011-11-04 08:37:53
【问题描述】:

希望您能提供帮助。

[DB1].[TableA] 我有一个数据列表,所有数据都具有唯一的 ID。 相同的数据在[DB2].[TableB] 中,但始终会更新并在此处插入新数据。

我希望能够将来自[DB2].[TableB] 的任何新数据插入[DB1].[TableA]

我可能希望它按计划作为 SQL 作业运行以检查是否有任何新闻,然后将它们从 TableB 插入到 TableA。可能一天3次。

希望有人能提供帮助!

提前致谢:)

【问题讨论】:

  • 您会在 [DB2].[TableB] 上进行更新或删除吗?或者只是 INSERTS 我假设您的意思是 DB2.dbo.tableB。 SQL Server 使用架构。以及 SQL Server 2008+ 或更早版本(有一些新功能使其更容易)
  • DB2 位于链接服务器上,我想从该服务器获取所有新数据并将其插入可能每天。由于他的数量,批量插入不起作用。
  • 抱歉,按 Enter 未完成。我试过用它来获取今天日期的所有记录并插入它们,但我无法访问数据类型,所以总是有错误。我认为服务器是2008 R2
  • 我问了 1. 删除 2. 更新 3. 版本。我从来没有问过批量插入。
  • 最新行与“今天的日期”不同。如果 TableB 上的数据发生变化,您希望 tableA 中有更多或不同的行吗?使用 SELECT @@VERSION 查找版本

标签: sql sql-server select insert


【解决方案1】:

一种简单的方法是使用更新脚本创建计划作业,例如:

INSERT INTO TestDB.DB1.TableA (id, firstname)
SELECT  tfr.Id, tfr.firstname
FROM    TestDB.DB2.TableB tfr
LEFT JOIN   TestDB.DB1.TableA tto on tfr.Id = tto.tid
WHERE   tto.id is null 

将任务计划设置为每天重复,并将频率设置为每 x 小时一次或在特定时间设置三个计划。

如果您需要更复杂的东西来管理 TableB 数据更改和日志记录,可以考虑创建一个 SSIS 包来包含您的数据流逻辑。

【讨论】:

  • 非常感谢,对不起,我刚刚开始,所以请原谅我问一些幼稚的问题,但是代码中的 tfr,tto 是什么意思?
  • 知道了,表格从和表格到?!我会试试的,然后告诉你。谢谢阿金
  • 插入部分中不能有多个字段名称。因为我只选择另一个表的一部分插入到目标表中的几个字段中。
  • 已修改示例以适应插入特定字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 2023-01-25
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多