如何定制Flyway,以便它可以处理CSV文件作为输入?

2024-05-04 20:04:09 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有人对Flyway实施了CSV处理?这是一段时间前请求的(Flyway specific migration with csv files)。Flyway现在将其作为MigrationResolver和MigrationExecutor的一种可能,但它似乎没有实现。在

我试过用Flyway4.2自己做,但我对java不是很在行。我已经用这个样本创建了我自己的jar,并让flyway可以访问它。但是flyway如何区分何时使用SqlMigrator和何时使用CsvMigrator?我想我必须注册我自己的前缀/后缀(正如上面的问题所写的),但是FlywayConfiguration似乎是只读的,至少我没有看到任何API调用来执行此操作:(。在

如何将不同的解析器连接到不同的迁移文件类型?(.sql到迁移使用sql和.csv/.py到csv加载和执行python脚本)


Tags: csvsqlwithfilesjavamigrationjar区分
1条回答
网友
1楼 · 发布于 2024-05-04 20:04:09

在流了一些眼泪和鲜血之后,它似乎想出了什么办法。我不能使整个代码可用,因为它使用的是专有文件格式,但主要思想如下:

  • 同时实现ConfigurationAware,并使用setFlywayConfiguration实现对要处理的额外文件进行编目(即.csv)。在运行期间只执行一次。在
  • 在这个编目过程中,我不能使用scanner或LoadableResources,有一些Java魔术我不明白。所有的类和方法似乎都是可用的和可访问的,即使在使用.getMethods()运行时。。。但是当你在跑步的时候打电话给他们java.lang.NoSuchMethodError以及java.lang.NoClassDefFoundError. 我在这上面浪费了一整天-别这么做,只是复制粘贴代码org.flywaydb.core.内部.util.scanner.filesystem.FileSystemScanner. 在
  • 使用Set<;String>;而不是LoadableResources[],这样更容易处理,尤其是因为无论如何都无法访问LoadableResources,使用[]是一场噩梦。在
  • python/shell调用将转到execute()。一些提示:
  • 任何异常或fallty exitcode都需要转换为SQLException。在
  • 该构建正在实施Java 1.6,因此无法使用新的ProcessBuilder(cmd).inheritIO()。看看这些解决方案:ProcessBuilder: Forwarding stdout and stderr of started processes without blocking the main thread如果您想打印STDOUT/STDERR。在
  • 要编译包含自定义模块的flyway,请从git克隆整个flyway repo,编辑mainpom.xml文件同时包含您的模块并使用此命令进行编译:“mvn install-P-CommercialDBTest-P-CommandlinePlatformAssemblies-DskipTests=true”(我在另一个stackoverflow问题中发现了这一点)
  • 我还没有做的是校验和部分,我还不知道它想要什么。在

相关问题 更多 >