本篇依官網「Getting Started with Liquibase and SQL on macOS」教學範例進行。
範例環境:
- macOS BigSur version 10.15.5
- Liquibase 4.10.0
事前要求
參考「Mac 安裝Liquibase by Homebrew」安裝liquibase。
使用範例檔
從官網下載手動安裝版的liquibase檔案,解壓縮後把裡面的examples
目錄複製到任意目錄,然後前往該目錄下的examples/sql
目錄。
檢視examples/sql
目錄中有以下檔案。
~/../examples/sql$ ls
blank-changelog.sql liquibase.properties
example-changelog.sql liquibase.sqlcmd.conf
example-changeset-sql.txt liquibase.sqlplus.conf
在examples/sql
以命令列輸入liquibase update
,liquibas便會根據執行目錄中的liquibase.properties
設定的參數來讀取changelog檔來更新資料庫的資料。
~/../examples/sql$ liquibase update
####################################################
## _ _ _ _ ##
## | | (_) (_) | ##
## | | _ __ _ _ _ _| |__ __ _ ___ ___ ##
## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ##
## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ##
## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ##
## | | ##
## |_| ##
## ##
## Get documentation at docs.liquibase.com ##
## Get certified courses at learn.liquibase.com ##
## Free schema change activity reports at ##
## https://hub.liquibase.com ##
## ##
####################################################
Starting Liquibase at 19:04:18 (version 4.10.0 #2501 built at 2022-05-04 14:27+0000)
Liquibase Version: 4.10.0
Liquibase Community 4.10.0 by Liquibase
Do you want to see this operation's report in Liquibase Hub, which improves team collaboration?
If so, enter your email. If not, enter [N] to no longer be prompted, or [S] to skip for now, but ask again next time [S]:
Skipping auto-registration
Running Changeset: example-changelog.sql::1::your.name
Running Changeset: example-changelog.sql::2::your.name
Running Changeset: example-changelog.sql::3::other.dev
Liquibase command 'update' was executed successfully.
在liquibase.properties
可看到下面設定:
changeLogFile
- Liquibase更新資料庫的資料庫異動紀錄檔changelog的位置。liquibase.command.url
- Liquibase要更新的目標資料庫URL。liquibase.command.username
- Liquibase要更新的目標資料庫使用者。liquibase.command.password
- Liquibase要更新的目標資料庫密碼。
liquibase.properties
...
# Enter the path for your changelog file.
changeLogFile=example-changelog.sql
#### Enter the Target database 'url' information ####
liquibase.command.url=jdbc:h2:tcp://localhost:9090/mem:dev
# Enter the username for your Target database.
liquibase.command.username: dbuser
# Enter the password for your Target database.
liquibase.command.password: letmein
...
用文字編輯器開啟examples/sql
目錄的example-changelog.sql
,此即為待會執行liquibase命令時使用的資料庫資料異動紀錄檔,簡稱changelog檔。Liquibase支援SQL、XML、JSON、YAML四種格式的設定檔,本篇是SQL格式。
example-changelog.sql
--liquibase formatted sql
--changeset your.name:1 labels:example-label context:example-context
--comment: example comment
create table person (
id int primary key auto_increment not null,
name varchar(50) not null,
address1 varchar(50),
address2 varchar(50),
city varchar(30)
)
--rollback DROP TABLE person;
--changeset your.name:2 labels:example-label context:example-context
--comment: example comment
create table company (
id int primary key auto_increment not null,
name varchar(50) not null,
address1 varchar(50),
address2 varchar(50),
city varchar(30)
)
--rollback DROP TABLE company;
--changeset other.dev:3 labels:example-label context:example-context
--comment: example comment
alter table person add column country varchar(2)
--rollback ALTER TABLE person DROP COLUMN country;
然後前往H2管理介面可看到多了COMPANY
、DATABASECHANGELOG
、DATABASECHANGELOGLOCK
、PERSON
資料表。
COMPAMY
資料表的欄位如下。
用文字編輯器開啟example-changelog.sql
並在最下面加入以下內容存檔。
--changeset your.name:4
ALTER TABLE company ADD country INT;
再次在examples/sql
以命令列輸入liquibase update
。
原本的COMPANY
資料表下便多了一個COUNTRY
欄位,即為剛在changelog example-changelog.sql
新增的異動內容的執行結果。
沒有留言:
張貼留言