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_generalledgerentriestotalssaft_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位)的数字,该怎么写?

sql 表中添加一列并将这一列赋值?

如何在我的数据框中添加一列,说明每行来自哪个工作表名称? Python

Prisma:如何在查询返回中添加一列?

如何编写一个查询以从SQL Server中包含类似名称的多个表中获取数据

TSQL - 如何查找名称中包含日期的所有表