Flyway-在名称中包含指定后缀的所有表中添加一列
Posted
技术标签:
【中文标题】Flyway-在名称中包含指定后缀的所有表中添加一列【英文标题】:Flyway-Add a column to all tables containing a specified sufifix in the name 【发布时间】:2021-05-31 06:41:06 【问题描述】:是否可以使用 Flyway 向名称以特定子字符串结尾的所有表添加一列?为了更好地了解我要解决的问题,我将在下面留下一个示例:
在我的数据库中,我有这两个表 saft_2020_1_111_nc_generalledgerentriestotals
和 saft_2017_2_112_nc_generalledgerentriestotals
,它们的名称都以 generalledgerentriestotals
结尾。
有什么方法可以让我的迁移将列添加到两个表中? 为每个表进行迁移不是一种选择,因为可能有 N 个表满足此要求,因此手动为每个表进行迁移将非常低效。
我使用的 mysql 有数据库,但如果可能的话,迁移过程最好是不可知的
【问题讨论】:
【参考方案1】:你应该能够得到所有的表名
SELECT table_name FROM information_schema.tables where table_name like '%generalledgerentriestotals';
然后在您的飞行路线中,您可以遍历此结果集并使用 ALTER TABLE 添加列;
我不确定你会如何做到这一点,因为获取表的查询会因每个提供商而异。
【讨论】:
所以我的迁移应该使用 java 类来完成? 对于不可知论者,我可以使用 liquibase,但不可能自动更改带有该后缀的所有表 @Fabio 我建议为此使用基于 SQL 的迁移,而不是基于 Java 的迁移。 flywaydb.org/documentation/concepts/migrations 我一直在使用 SQL 迁移。但是如何循环遍历结果集?以上是关于Flyway-在名称中包含指定后缀的所有表中添加一列的主要内容,如果未能解决你的问题,请参考以下文章
在SQL数据库表中添加一列数值型(默认保留2位)的数字,该怎么写?
如何在我的数据框中添加一列,说明每行来自哪个工作表名称? Python