首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相同的模式合并数据库

用相同的模式合并数据库
EN

Database Administration用户
提问于 2021-02-10 21:58:07
回答 1查看 39关注 0票数 1

我们过去每个客户端都有一个数据库,现在我们开始使用单个数据库。我需要找到一种不丢失数据(包括外键)的合并数据库的方法。我的主键都是整数。

我理解的是,唯一的方法是更新除了一个数据库之外的所有主键和所有外键(这样就不会有冲突),然后将它们导入一个新的db中。这是真的吗?

如果是这样,我发现的唯一方法是手动将所有外键设置为可推迟的,然后手动增加所有主键。这是真的吗?有没有办法让它自动进入我所有的主键和外键?

EN

回答 1

Database Administration用户

发布于 2021-02-11 02:34:49

我遇到了这个问题。有时候我不得不用困难的方法解决这个问题。但是其他的,我只需取一个足够大的数字,并将它添加到一个数据库中的所有数字键中。然后我把这两个数据库合并。假设我在BD1中的最大键是1213456,那么我在BD2中的所有键中都添加了1000000。

您可以准备查询information_schema的脚本以生成所有修改/更改/更新。类似的东西(只有PK)

代码语言:javascript
复制
SELECT CONCAT('UPDATE ', U.TABLE_SCHEMA,'.', U.TABLE_NAME, ' SET ', U.COLUMN_NAME, ' = ',U.COLUMN_NAME,' + 100000' )
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS    C
    JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE U 
        ON U.CONSTRAINT_NAME = C.CONSTRAINT_NAME
           AND U.CONSTRAINT_SCHEMA = C.CONSTRAINT_SCHEMA
           AND U.CONSTRAINT_NAME = C.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY'

当您感到足够自信时,将返回像UPDATE dbo.Table1 SET id = id + 100000这样的查询和运行结果查询。祝好运!

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/285162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档