Java Flyway-oracle PL/SQL过程迁移
更新schema_version表并在flyway中执行修改后的PL/SQL包/过程而无需代码重复,最好的方法是什么 我的示例需要为每个PL/SQL代码修改创建一个类文件Java Flyway-oracle PL/SQL过程迁移,java,oracle,flyway,Java,Oracle,Flyway,更新schema_version表并在flyway中执行修改后的PL/SQL包/过程而无需代码重复,最好的方法是什么 我的示例需要为每个PL/SQL代码修改创建一个类文件 public class V2_1__update_scripts extends AbstractMigration { // update package and procedures } AbstractMigration类执行db/update文件夹中的文件: public abstract class Ab
public class V2_1__update_scripts extends AbstractMigration {
// update package and procedures
}
AbstractMigration类执行db/update文件夹中的文件:
public abstract class AbstractMigration implements SpringJdbcMigration {
private static final Logger log = LoggerFactory.getLogger(AbstractMigration.class);
@Override
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
Resource packageFolder = new ClassPathResource("db/update");
Collection<File> files = FileUtils.listFiles(packageFolder.getFile(), new String[]{"sql"}, true);
for (File file : files ) {
log.info("Executing [{}]", file.getAbsolutePath());
String fileContents = FileUtils.readFileToString(file);
jdbcTemplate.execute(fileContents);
}
}
}
公共抽象类AbstractMigration实现SpringJdbcMigration{
私有静态最终记录器log=LoggerFactory.getLogger(AbstractMigration.class);
@凌驾
public void migrate(JdbcTemplate JdbcTemplate)引发异常{
Resource packageFolder=新类路径资源(“db/update”);
Collection files=FileUtils.listFiles(packageFolder.getFile(),新字符串[]{“sql”},true);
用于(文件:文件){
log.info(“正在执行[{}]”,file.getAbsolutePath();
字符串fileContents=FileUtils.readFileToString(文件);
jdbcTemplate.execute(fileContents);
}
}
}
有没有更好的执行PL/SQL代码的方法?没有内置的支持或其他您错过的命令 在我脑海中,我会考虑您在这里介绍的方式,或者在SCM提交后使用生成器生成新的迁移sql文件
让我们看看是否有其他人找到了更好的解决方案。您没有错过任何内置支持或其他命令 在我脑海中,我会考虑您在这里介绍的方式,或者在SCM提交后使用生成器生成新的迁移sql文件
让我们看看是否有其他人找到了更好的解决方案。我想知道是否最好将代码复制到标准迁移文件夹中。在给定的示例中,您似乎无法迁移到db的N版本,因为以前的某个版本将执行所有当前版本的pl/sql。我很想知道您是否已经确定了解决方案。我想知道是否最好将代码复制到标准迁移文件夹中。在给定的示例中,您似乎无法迁移到db的N版本,因为以前的某个版本将执行所有当前版本的pl/sql。我很想知道您是否已经确定了解决方案。撰写本文时的Flyway current版本(v4.2.0)支持专为此类情况设计的可重复脚本的概念。基本上,任何具有“创建或替换”语义的脚本都是候选脚本
只需将脚本命名为
R\uu mypackage\u body.sql
或任何您希望用于可重复脚本的前缀。有关更多信息,请参阅和。撰写本文时的Flyway current版本(v4.2.0)支持专为此类情况设计的可重复脚本的概念。基本上,任何具有“创建或替换”语义的脚本都是候选脚本
只需将脚本命名为R\uu mypackage\u body.sql
或任何您希望用于可重复脚本的前缀。有关更多信息,请参阅和