MySQL:将数据从 OldDB 普通表迁移到多对多关系

标签 mysql database migration many-to-many

这是一个非常简化的图形情况: http://i.stack.imgur.com/5NoRe.png

有两个不同模式的数据库,旧的黄色数据库(一张简单明了的表)和新的绿色数据库(具有类似于上述的一些关系)。

问题是我想将 OldDB 上的信息(超过 40k 行)迁移到 NewDB 中,但我一直在进行这种关系转换。在 OldDB 中,我们为每个中心设置了不同的字段,并且取决于它们的 CHAR(1) = Y 或 = N,它们是否正在采取某种行动。

现在在 NewDB 中,我们在另一个表中有这些中心,它们有自己的 ID,并与主表 (b) 的多对多相关。

所以我想要的是遍历 Old.DB 中的每个中心(最多 20 个),当它变为例如 center14 CHAR(1) = Y 时,设置NewDB.center_has_b.center_id = 14NewDB.center_has_b.b_id = OldDB.oldb.oldb_id

我是 MySQL 的新手,但我正在考虑做这样的事情,但运气不佳:

INSERT NewDB.center_has_b (center_id, b_id) (N, (SELECT oldb_id from OldDB.oldb WHERE centerN = 1));

最佳答案

试试这个:

INSERT NewDB.center_has_b (center_id, b_id)
 select 'N', oldb_id from OldDB.oldb WHERE centerN = 1

编辑:这是基于此答案的第一条评论

insert into center_has_b (center_id,b_id)
select c.enter_id ,old.b_id
from centers c
cross join old.b
where Allcenters = 'Y'

关于MySQL:将数据从 OldDB 普通表迁移到多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579635/

相关文章:

mysql - 不同的sql在两台服务器上解释。 "Copying to tmp table"极慢

php - 为什么 PDO 将我的 bool(false) 参数转换为字符串 ('' )?

mysql - 需要数据库设计方面的建议

proxy - 零停机时间将服务从一个Docker容器迁移到另一个

ruby - Mongoid:将嵌入式文档转换为引用/自己的集合

Mysql更新日期字段为1年

带逗号的 MySQL LIKE 子句

php - 一个非常简单的查询不工作 PHP

mysql - 在 MySQL 中创建动态数量的表

ruby-on-rails - Heroku 迁移:PG::错误:错误:关系 "roles"不存在