sql - 在生产 mysql 数据库上进行复杂模式更新的最简单方法是什么?

标签 sql mysql database migration

我有一个相当大的数据库,它将经历一些大规模的架构更改。将添加许多新的实体和关系。坦率地说,现有架构没有足够的信息来生成使用基本 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/

相关文章:

mysql - Case 表达式无法按预期使用 'on duplicate key update' 子句

php - 保存到数据库之前的 Laravel 预览

java - 数据库查询 vs java 处理

SQL - 获取昨天和前天的数据

mysql - SQL 调用临时表中的列

sql - SUM()函数sql有上限

mysql - 使用 count 将两个表连接在一起

sql - 交叉联接行为 (SQLServer 2008)

mysql - Sequelize : How to multiply column into an aggregate function

java - 使用 Java 处理大量数据