我有一个相当大的数据库,它将经历一些大规模的架构更改。将添加许多新的实体和关系。坦率地说,现有架构没有足够的信息来生成使用基本 UPDATE 和 INSERT 语句迁移数据所需的行和关系。
在需要对现有数据进行大量分析的 mysql 数据库中插入和更新记录的最简单方法是什么?编程语言? Mysql的编程能力?
理想情况下,我希望将其作为脚本与其余数据迁移代码(更改表、创建表等)一起运行,以便所有这些都按顺序同时发生。但我在编写基于 sql 的程序方面并不是最有经验的——比如使用变量、函数、逻辑等。在我 20 年的应用程序编写过程中,我从来没有编写过存储过程或基于 sql 的程序——尤其是现在。
因此,如果我这样做的话,我可能会花一两天的时间来迁移数据。
还有其他可行的选择吗?或者是否非常需要深入了解 SQL 的细节?
有什么建议吗?
这是我需要做的基本算法:
- 从所有教师中找到一位教师(随机?第一个 id?)代表每个教育机构
- 为每个教育机构找到所有允许的模块
- 为代表教育机构的老师为每个允许的模块创建一门类(class)
- 对于每个事件模块(具有对模块和教育设施的引用),找到上面刚刚创建的类(class)并将其链接到事件模块
- 从事件模块中删除模块引用
最佳答案
如果您要同时迁移数据和更改架构,我建议您创建一个新数据库(对您想要的架构进行任何更改),然后将数据迁移到该数据库而不修改原始数据库;这也应该备份,只是为了确定。
在如此大的更新中,某些事情会出错,所以您总是希望能够丢弃您的新数据库,修复翻译问题,创建一个新的空白数据库,然后再试一次。
我知道您正在使用 MySQL,但您也可以访问 SQL Server 吗?如果这样做,您可以使用 SSIS 来迁移数据(除非其他人知道可以与 MySQL 一起使用的类似于 SSIS 的开源工具?)
这是一个出色的工具,不需要大量的 SQL 语言知识就可以正常工作,但我建议您购买一本有关该主题的书。我从未尝试过将 SSIS 连接到 MySQL,但我知道您可以使用 ODBC,我在这里找到了解释:Connecting to MySQL from SSIS
关于sql - 在生产 mysql 数据库上进行复杂模式更新的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273905/