我有一个java上的web应用程序,它正在使用数据库。我需要一个ant的脚本来部署或更新我的应用程序到最新版本。应用程序部分没有问题,但我不知道如何更新数据库。
我有一个想法,在sql脚本的名称中构建一些元信息(版本号)。
例如:
- DB_1.0.0.sql
- DB_1.0.1.sql
- DB_1.2.0.sql
- DB_2.0.0.sql
- DB_2.1.0.sql
我的脚本检测到,当前版本是1.0.1,所以我需要通过sql任务执行DB_1.2.0.sql、DB_2.0.0.sql和DB_2.1.0.sql文件。问题是:如何用ant查找文件,我需要执行。
也许这不是更新数据库的最佳方式。你还有其他想法吗?
Flyway的工作原理如您所述。它会记录已应用于数据库的SQL文件,从而实现自动升级。使用简单直接。
一个更强大的解决方案,IMHO,是液化糖。它使用XML语法来记录数据库的更改,从而能够生成跨平台SQL。它还具有一些强大的功能,例如回滚更改和在数据库之间执行差异的能力。
看起来文件名遵循严格的转换。在这种情况下,您可以通过匹配模式文件列表来查找文件,并使用sql执行。
您可以使用LiquiBase编写一些有助于数据库模式更新的任务-