有没有办法在运行时使用 Liquibase 将 属性 替换作为参数传递?请分享一个例子?
Is there a way to pass property substitution as an argument during runtime with Liquibase? Please share an example?
我不想使用环境变量来设置我的构建脚本,该环境变量为以下变更集设置架构名称:
<createTable tableName="actor" schemaName="mySchema">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
我在构建脚本中从命令行启动 Liquibase。
为了传递会因环境而异的参数,Liquibase 使用 属性 替换。这需要对现有流程进行 2 处更改。
第一种是用变量替换文字值:
我希望我的构建脚本设置有一个环境变量,该环境变量为以下 changeSet 设置模式名称(我们将使用下面 SCHEMA 的 属性 名称):
<createTable tableName="actor" schemaName="${SCHEMA}">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
然后我们可以在命令行创建期间为 SCHEMA 传递一个值,并证明将替换什么值,我使用了(注意 lookup 是我要替换的模式的名称):
liquibase --changeLogFile=“sample.xml” updateSQL -DSCHEMA=lookup
这里是输出的一个片段,它将显示架构已被替换为查找值:
....
CREATE TABLE lookup.actor (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, firstname VARCHAR(255), lastname VARCHAR(255), twitter VARCHAR(15), CONSTRAINT actor_pkey PRIMARY KEY (id));
...
如果看起来没问题,您实际上可以 运行 变更集:
liquibase --changeLogFile=“sample.xml” update -DSCHEMA=lookup
我不想使用环境变量来设置我的构建脚本,该环境变量为以下变更集设置架构名称:
<createTable tableName="actor" schemaName="mySchema">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
我在构建脚本中从命令行启动 Liquibase。
为了传递会因环境而异的参数,Liquibase 使用 属性 替换。这需要对现有流程进行 2 处更改。
第一种是用变量替换文字值:
我希望我的构建脚本设置有一个环境变量,该环境变量为以下 changeSet 设置模式名称(我们将使用下面 SCHEMA 的 属性 名称):
<createTable tableName="actor" schemaName="${SCHEMA}">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
然后我们可以在命令行创建期间为 SCHEMA 传递一个值,并证明将替换什么值,我使用了(注意 lookup 是我要替换的模式的名称):
liquibase --changeLogFile=“sample.xml” updateSQL -DSCHEMA=lookup
这里是输出的一个片段,它将显示架构已被替换为查找值:
....
CREATE TABLE lookup.actor (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, firstname VARCHAR(255), lastname VARCHAR(255), twitter VARCHAR(15), CONSTRAINT actor_pkey PRIMARY KEY (id));
...
如果看起来没问题,您实际上可以 运行 变更集:
liquibase --changeLogFile=“sample.xml” update -DSCHEMA=lookup