liquibase可以在sql中配置占位符吗?
示例代码:
<changeSet author="name" id="sql-example" runAlways="true" failOnError="true">
<sql>SELECT schema.admin_insert('PARAMETER_PLACEHOLDER')</sql>
</changeSet>
我可以在属性文件中定义参数值吗?以便 liquibase 替换属性文件中的参数值?
是的,可以。 Liquibase 将这些称为“更改日志参数”
http://www.liquibase.org/documentation/changelog_parameters.html
该页面的简短摘录:
Liquibase 允许动态替换变更日志中的参数。 要替换的参数使用
语法进行描述。${parameterName}
配置参数值
按以下顺序查找参数值:
- 作为参数传递给 Liquibase 运行程序(请参阅 Ant、command_line、 等有关如何通过它们的文档)
- 作为 JVM 系统属性
- DatabaseChangeLog 文件的参数块(
标签)中 本身。<property>
示例
<createTable tableName="${table.name}">
<column name="id" type="int"/>
<column name="${column1.name}" type="varchar(${column1.length})"/>
<column name="${column2.name}" type="int"/>
</createTable>
根据https://docs.liquibase.com/concepts/changelogs/property-substitution.html
您可以使用:
--liquibase formatted sql
--changeset example:1
CREATE TABLE ${schema.name}.person
( id int primary key,
first_name varchar(50) NOT NULL,
last_name varchar(50) NOT NULL
)
使用配置的环境变量
schema.name=dev_schema
,您将收到以下 SQL 输出:CREATE TABLE dev_schema.person
。