【问题标题】:transfer data from one database to another regarding keys将有关密钥的数据从一个数据库传输到另一个数据库
【发布时间】:2014-11-04 04:22:35
【问题描述】:

如何将两个表(Patient 和 ContactDetails)中的行从 DB1 传输到 DB2? 两个数据库,已经有这两个表的数据。我只想将这两个表中的数据从 db1 添加到 db2。

我尝试关注that

但它不起作用,因为有些行具有相同的键并且禁止覆盖。

还有其他方法吗?还是我错过了什么?

患者和contactdetails的关系是

patient inner join contactdetails
(foreign_key)patient.contactdetailsid = (primary_key)contactdetails.id

【问题讨论】:

  • 您的主键是身份字段吗?
  • 您只是想追加数据并保留现有数据,还是尝试替换整个表?
  • 这个副本的目的是什么?是保持两个数据库同步吗?还是说DB1是入口系统,DB2是母舰?

标签: sql-server database data-transfer


【解决方案1】:

在源contactdetails 表上循环,每次插入每一行,在临时表中保存旧的contactdetail id和匹配的新contactdetail id(here是sql循环的一个例子)。
临时表应该是这样的:

create @temptableforcopy table (
 oldcontactdetailsid [insertheretherightdatatype],
 newcontactdetailsid [insertheretherightdatatype]
)

将患者表中的数据复制到上一步使用的临时表中,如下所示:

insert into newdb.newschema.patient (contactdetailsid, field1, field2, ...)
select TT.newcontactdetailsid,
       old.field1,
       old.field2,
       ...
from   olddb.oldschema.patient old
       join @temptableforcopy TT on TT.oldcontactdetailsid = old.contactdetailsid

请注意,我的提议只是一个疯狂的猜测:您没有提供有关结构、键、约束的信息,没有详细说明哪个键阻止了与哪个错误消息的复制,您已经丢弃的解决方案,您的数据量必须处理...

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2016-01-19
    相关资源
    最近更新 更多