2012-01-31 93 views
1

我有一個關於java的web應用程序,它使用數據庫。我需要一個ant腳本,將我的應用程序部署或更新到最新版本。應用程序部分沒有問題,但我不知道如何執行數據庫更新。如何通過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,所以我需要執行DB_1.2.0.sql,DB_2.0.0.sql,DB通過SQL任務_2.1.0.sql文件。問題是:如何用ant找到文件,我需要執行。

也許這不是更新數據庫的最好方法。你有其他想法嗎?

回答

2

Flyway作品你所描述。它保留已經應用到數據庫的SQL文件的記錄,從而啓用自動升級。簡單而直接的使用。

更強大的解決方案,恕我直言,是liquibase。它具有XML語法來記錄數據庫更改,從而實現跨平臺SQL的生成。它還具有一些強大的功能,例如能夠回滾更改並在數據庫之間執行差異。

+0

@MarkOConnor感謝您的回答!我很抱歉我很久沒有回覆了。 Flyway看起來像我需要的。 – Sergey 2012-02-10 10:43:52

+0

404您的第二個鏈接。 – orbfish 2014-01-16 16:52:47

+0

@orbfish固定謝謝你 – 2014-01-16 18:20:02

1

它看起來像你的文件名遵循嚴格的對流。在這種情況下,您可以通過匹配模式filelist找到文件並使用sql執行。

您可以使用LiquiBase寫一些任務可以在數據庫架構幫助更新 -