Sql 如何使用单独数据库中另一个表的数据更新一个表?
可能重复:Sql 如何使用单独数据库中另一个表的数据更新一个表?,sql,database,sql-update,Sql,Database,Sql Update,可能重复: 这里没有极端的SQL。我有两个数据库(数据库1、数据库2)。每个数据库都有相同的表。我想用Database1中的TableA数据更新Database2中的TableA(Database1,TableA->Database2,TableA) 这样做的最佳方式是什么?假设您使用的是dbo模式 insert into Database2.dbo.TableA (column1, column2, etc) select column1, column2, etc from Databas
这里没有极端的SQL。我有两个数据库(数据库1、数据库2)。每个数据库都有相同的表。我想用Database1中的TableA数据更新Database2中的TableA(Database1,TableA->Database2,TableA)
这样做的最佳方式是什么?假设您使用的是
dbo
模式
insert into Database2.dbo.TableA (column1, column2, etc)
select column1, column2, etc
from Database1.dbo.TableA
如果传入的数据应该覆盖旧的数据,或者您使用的是标识字段,那么您可能希望首先截断Database2.dbo.TableA
如果需要表中的ID完全相同,则应在运行脚本之前禁用
Database2.dbo.Table
上的identity属性,然后重新启用该属性。类似这样,假设使用的是dbo
架构
insert into Database2.dbo.TableA (column1, column2, etc)
select column1, column2, etc
from Database1.dbo.TableA
如果传入的数据应该覆盖旧的数据,或者您使用的是标识字段,那么您可能希望首先截断Database2.dbo.TableA
如果需要表中的ID完全相同,则应在运行脚本之前禁用
Database2.dbo.Table上的identity属性,然后重新启用该属性。如果将此作为一次性数据同步执行,右键单击特定数据库时,SQL Server在“任务”选项下提供导入/导出数据。您可以选择要用作数据源和目标的sql server/数据库/表,然后运行作业。设置此选项时,将有机会设置一个选项,以清除目标表并插入源中的所有数据
您还可以安排这些类型的事务按计划运行,尽管我在这方面从未做过很多工作。如果您是以一次性数据同步的方式执行此操作,则在右键单击特定数据库时,SQL Server会在“任务”选项下提供导入/导出数据。您可以选择要用作数据源和目标的sql server/数据库/表,然后运行作业。设置此选项时,将有机会设置一个选项,以清除目标表并插入源中的所有数据
您还可以安排这些类型的事务按计划运行,尽管我在这方面从未做过很多工作。您使用的是哪种RDBMS(MS SQL、Oracle、MySQL)?是否要用源表完全覆盖目标表?只需添加新行?这是在MS SQL中。基本上,目标表包含与源表相同的数据,但源表可能在现有行中有不同的值和/或有新行。我希望目标表与源表匹配,因此如果目标表中不存在新行,我可能必须插入新行,并更新现有行。您需要多久同步一次这两个表?您是在寻找实时的还是每天都在寻找的东西?这可能只是一次性的更新。您使用的是哪种RDBMS(MS SQL、Oracle、MySQL)?是否要用源表完全覆盖目标表?只需添加新行?这是在MS SQL中。基本上,目标表包含与源表相同的数据,但源表可能在现有行中有不同的值和/或有新行。我希望目标表与源表匹配,因此如果目标表中不存在新行,我可能必须插入新行,并更新现有行。您需要多久同步一次这两个表?您是否每天都在寻找实时或其他内容?这可能只是一次性更新。尝试了导入/导出方法,但在复制过程中失败。错误消息非常隐晦,没有多大用处。有没有办法编写脚本?我也尝试了上面Justin的解决方案,但它无法插入do来复制密钥。我只想插入新行/键,如果它们不同,则更新现有行/键。您能发布错误消息吗?如果首先清除目标表中的所有记录,则可以使用Justin的方法。这样可以避免重复的密钥。为了清除您的记录,我使用了truncate table,这对我来说更有效。谢谢。我将尝试“truncate”,然后尝试运行Justin的方法。下面是错误消息(还有很多,但要点如下):“违反主键约束'PK\u SharedContent\u sharedContentGuid'。无法在对象'dbo.SharedContent'中插入重复键。”。(SQL Server导入和导出向导)
。我想我只需要先清除目标表。:-)看起来这两个问题都与清除旧数据以避免重复密钥有关。尝试了导入/导出方法,但在复制过程中失败。错误消息非常隐晦,没有多大用处。有没有办法编写脚本?我也尝试了上面Justin的解决方案,但它无法插入do来复制密钥。我只想插入新行/键,如果它们不同,则更新现有行/键。您能发布错误消息吗?如果首先清除目标表中的所有记录,则可以使用Justin的方法。这样可以避免重复的密钥。为了清除您的记录,我使用了truncate table,这对我来说更有效。谢谢。我将尝试“truncate”,然后尝试运行Justin的方法。下面是错误消息(还有很多,但要点如下):“违反主键约束'PK\u SharedContent\u sharedContentGuid'。无法在对象'dbo.SharedContent'中插入重复键。”。(SQL Server导入和导出向导)
。我想我只需要先清除目标表。:-)看起来这两个问题都与清除旧数据有关,以避免重复密钥。