一文详解Liquibase如何自动化数据库脚本部署( 二 )


请将您的WALLET_NAME.ZIP解压到之前创建的HR/Liquibase文件夹中,并编辑
HR/liquibase/wallet_name/ojdbc.properties文件:

一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
更改ojdsb.properties
修改后的文件如上图所示 。在
javax.net.ssl.trustStorePassword和javax.net.ssl.keyStorePassword行,你可以设置ATP Wallet的密码 。

liquibase_local.properties文件中,请编辑URL一行,并设置连接的名称(即,来自Wallet/tnsnames.ora,以及去往Wallet的路径):
url: jdbc:oracle:thin:@rgatp28_high?TNS_ADMIN=liquibase/Wallet_RGATP28 当然,请检查您的sqlnet.ora文件,确保其“SSL_SERVER_DN_MATCH=yes”,且无需改变其他地方 。
将Liquibase与数据库连接如果一切设置正确,我们便可以顺利连接上DEV数据库 。让我们从HR文件夹(Liquibase的属性文件位置)处启动CLI,并输入:
Liquibase—defaultsFile=liquibase_dev.properties updateSQL
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
VSCode终端中的updateSQL命令
其中:
  • Liquibase会调用LB的环境路径 。
  • defaultsFile指定属性文件的名称和位置 。如果您将属性文件命名为“liquibase.properties”,那么可以省略此命令 。
  • updateSQL负责生成SQL脚本(它并不会对数据库执行任何操作) 。
几秒钟后,LB将会生成output_file.sql:
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
生成的output_file.sql
如前所述,如果您在数据库中运行该脚本,它将创建两个表:DATABASECHANGELOG和DATABASECHANGELOGLOCK 。下面,让我们通过Liquibase—defaultsFile=liquibase_dev.properties update,来创建这些表 。其中的update命令是对数据库执行SQL语句 。完成后,您将看到如下结构:
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
我们需要创建一个changelog文件,并指向包含对象的文件夹 。在此,我创建了如下HR/master.xml文件:
<?xml version="1.0″ encoding="UTF-8″?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd"> <includeAll path="triggers" relativeToChangelogFile="true"/> <includeAll path="views" relativeToChangelogFile="true"/> <includeAll path="types" relativeToChangelogFile="true"/> <includeAll path="package_spec" relativeToChangelogFile="true"/> <includeAll path="package_bodies" relativeToChangelogFile="true"/> </databaseChangeLog> 它指向对象文件夹、及其所有内容 。为了将主changelog文件HR/liquibaseupdate.xml设置为指向master.xml文件的路径,您只需添一行:
【一文详解Liquibase如何自动化数据库脚本部署】<include file="./master.xml"/>
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
在update.xml中的include file="./master.xml"
由于Liquibase始终会从Liquibase_dev.properties文件和update.xml文件处运行,因此我们需要让它能够“看到”所有的文件 。
跟踪DML和DDL数据库的更改我们需要为DML和DDL类型的更改创建一个单独的changelog文件,并将更改集写入其中 。为此,我们只需创建一个changelog.sql文件,并输入如下内容,以将其标记为LiquibaseSQL文件:
—Liquibaseformatted sql
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
将changelog.sql标记为LiquibaseSQL文件
我们通过在master.xml文件中添加如下内容,以指向新的changelog:
一文详解Liquibase如何自动化数据库脚本部署

文章插图
 
指向新的changelog
指向changelog或文件夹的顺序是非常重要的 。它需要告知Liquibase在运行SQL时的顺序 。我们最好先运行changelog(其中包含了“create table(...)”),然后再运行使用该表的编译包 。
下面,让我们在变更集中创建第一个项目表:
—changeset AUTHOR:CHANGESET_NAME —comment OPTIONAL COMMENT YOUR DDL
一文详解Liquibase如何自动化数据库脚本部署


推荐阅读