網頁

2022/5/14

Liquibase Getting Started with SQL教學範例

本篇依官網「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管理介面可看到多了COMPANYDATABASECHANGELOGDATABASECHANGELOGLOCKPERSON資料表。



COMPAMY資料表的欄位如下。



用文字編輯器開啟example-changelog.sql並在最下面加入以下內容存檔。

--changeset your.name:4
ALTER  TABLE  company  ADD  country  INT;

再次在examples/sql以命令列輸入liquibase update

原本的COMPANY資料表下便多了一個COUNTRY欄位,即為剛在changelog example-changelog.sql新增的異動內容的執行結果。





沒有留言:

張貼留言