【问题标题】:How to update one table with data from another table in a separate database? [duplicate]如何使用单独数据库中另一个表的数据更新一个表? [复制]
【发布时间】:2011-09-15 16:49:33
【问题描述】:

可能重复:
update one table with data from another

这里是极端 SQL 菜鸟。我有两个数据库(Database1、Database2)。每个数据库都有相同的表。我想用来自 Database1 (Database1,TableA -> Database2,TableA) 的 TableA 中的数据更新 Database2 中的 TableA。

最好的方法是什么?

【问题讨论】:

  • 您使用的是哪个 RDBMS(MS SQL、Oracle、MySQL)?您想用源表完全覆盖目标表吗?只需添加新行?
  • 这是在 MS SQL 中。基本上,目标表包含与源表相同的数据,但源表在现有行中可能具有不同的值和/或具有新行。我希望目标表与源表匹配,因此如果目标表中不存在新行,我可能必须插入新行,并更新现有行。
  • 您需要多久同步一次这两个表?您是在寻找实时信息还是每天都在寻找?
  • 这可能只是一次更新。

标签: sql database sql-update


【解决方案1】:

像这样,假设您使用 dbo 架构。

insert into Database2.dbo.TableA (column1, column2, etc)
select column1, column2, etc
from Database1.dbo.TableA

如果传入数据应该覆盖旧数据或者您正在使用身份字段,您可能需要先truncate Database2.dbo.TableA

如果您需要表格中的 id 完全相同,您应该在运行脚本之前禁用 Database2.dbo.Table 上的标识属性,然后重新启用它。

【讨论】:

    【解决方案2】:

    如果您将此作为一次性数据同步,当您右键单击特定数据库时,SQL Server 会在“任务”选项下提供导入/导出数据。您可以选择要用作数据源和目标的 sql server/database/tables,然后运行该作业。进行此设置后,将有机会设置一个选项以清除目标表并插入源中的所有数据。

    您还可以安排这些类型的事务按计划运行,尽管我在这方面从未做过太多工作。

    【讨论】:

    • 尝试了导入/导出方法,但在复制过程中失败。错误消息非常神秘,不是很有用。有没有办法编写这个脚本?我也尝试了上面贾斯汀的解决方案,但它未能插入重复键。我只想插入新的行/键并更新现有的行/键(如果它们不同)。
    • 你能发布错误信息吗?如果您先清除目标表中的所有记录,则可以使用 Justin 的方法。那应该避免重复的键。为了清除您的记录,我使用了 truncate table,这对我来说更有效。
    • 谢谢。我会尝试“截断”,然后尝试运行 Justin 的方法。
    • 这里是错误信息(还有很多,但这里是要点):"Violation of PRIMARY KEY constraint 'PK_SharedContent_sharedContentGuid'. Cannot insert duplicate key in object 'dbo.SharedContent'.". (SQL Server Import and Export Wizard)。我想我只需要先清除目标表。 :-)
    • 看起来这两个问题都与清除旧数据以避免重复键有关。
    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多