我正在尝试找出将数据从旧数据库架构迁移到新架构的最佳方法。基本上,我正在处理软件替换(因此是新的数据库结构),现在我需要将数据从旧数据库迁移到新数据库中。不幸的是,这并不像基于旧模式中的选择在查询中运行简单插入操作那样简单。
在旧模式中可以找到的示例结构:
**课程**
| id | title | start_date | price |
| 1 | Some course title 1 | 2019-10-09 | 100.00 |
| 2 | Some course title 2 | 2019-10-09 | 100.00 |
当然,实际表中有更多列,但这只是一个基本概念。
在新模式中,结构是这样的:存在两个表,其中一个表保存课程标题的翻译后的值。
在新模式中可以找到的示例结构:
**课程**
| id | title_tid | start_date | price |
| 1 | 1 | 2019-10-09 | 100.00 |
| 2 | 2 | 2019-10-09 | 100.00 |
**翻译**
| id | content_en | content_nl |
| 1 | Some course title 1 | null |
| 2 | Some course title 2 | null |
在新架构中,这使我们能够让用户将其课程标题翻译成多种语言,等等。新架构中的许多其他来源也使用了translations表。
我的问题的基础是,我必须或者至少认为我必须遍历旧模式的Courses表的记录,并为每个记录首先在新模式中创建一个Translations记录。从该翻译中,我需要将ID放入新Courses表的title_tid中。
现在,最好的方法是什么?我可以仅在SQL中执行此操作,还是需要编写脚本来迁移此数据?例如在PHP或类似的东西?当然,这对于性能而言不是很好。
编辑: 是的,我知道这种翻译设置在设计上非常差劲,我也不知道为什么这些家伙会这样做……但是,嘿,这里不是重点:P