Liquibase loadData 取决于上下文

Liquibase loadData depending on context

我有一个安装了 liquibase 和一些 changeSet 的 springboot 项目。为了更简单,我使用 loadData 从我的 csv 文件加载数据。现在我正在生产中部署它,但我想创建没有数据的 table。

<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>

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

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

使用

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

只在开发中播放这个变更集 您可以使用多个 changeSet 来选择您的加载数据上下文。 标准生成的单元测试使用 PROD 来准备数据库。

例如在您的文件中:22220000000000 将仅在 DEV 中,222100000000000 将在 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