Liquibase loadData取决于上下文

时间:2018-08-26 17:20:55

标签: spring-boot jhipster liquibase

我有一个安装了liquibase和一些changeSet的springboot项目。为了简化开发,我使用loadData从csv文件中加载数据。现在,我将其部署到生产环境中,但我想创建不包含数据的表。

<changeSet id="00000000000001" author="jhipster">
    <createTable tableName="jhi_user">
        <column name="id" type="bigint" autoIncrement="${autoIncrement}">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        [...]
    <loadData encoding="UTF-8"
              file="config/liquibase/users.csv"
              separator=";"
              tableName="jhi_user">
        <column name="activated" type="boolean"/>
        <column name="created_date" type="timestamp"/>
    </loadData>
</changeSet>

是否可以根据上下文加载数据?

1 个答案:

答案 0 :(得分:2)

在jhipster liquibase配置中,有PROD和DEV 上下文。

使用

<changeSet id="00000000000001" author="jhipster" context="DEV" >

仅在dev中播放此变更集 您可以使用多个changeSet选择您的loaddata上下文。 标准生成的单元测试使用PROD准备数据库。

例如在您的文件中:22220000000000仅在DEV中,22210000000000将在DEV + PROD中

<changeSet id="22220000000000" author="Korrident" context="DEV">
    <loadData encoding="UTF-8"
              file="config/liquibase/DEV_boards.csv"
              separator=";"
              tableName="board">
    </loadData>
    <loadData encoding="UTF-8"
              file="config/liquibase/DEV_game_managements.csv"
              separator=";"
              tableName="game_management">
    </loadData>
</changeSet>


<changeSet id="22210000000000" author="Korrident" >
    <loadData encoding="UTF-8"
              file="config/liquibase/DEV_PROD_players.csv"
              separator=";"
              tableName="player">
    </loadData>
</changeSet>

liquibase官方文档:https://www.liquibase.org/documentation/contexts.html