Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Flyway-oracle PL/SQL过程迁移_Java_Oracle_Flyway - Fatal编程技术网

Java Flyway-oracle 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

更新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 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
或任何您希望用于可重复脚本的前缀。有关更多信息,请参阅和