Как использовать Liquibase для создания схемы базы данных?

  • 19 августа 2023 г. 11:46
Ответы на вопрос 1
Для создания схемы базы данных с использованием Liquibase, вам нужно создать файл сценария Liquibase, в котором опишите необходимые изменения. В этом файле можно указать создание таблиц, индексов и других объектов базы данных.

1. Создайте новый файл с расширением `.xml` или `.yaml`, например, `changelog.xml`.

2. Определите версию Liquibase в файле сценария. Добавьте следующий код в начало файла:

```xml
<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.0.xsd">
```

или

```yaml
databaseChangeLog:
  - changeSet:
      id: 1
      author: your_name
```

3. Добавьте изменения базы данных в файл сценария. Например, чтобы создать таблицу, добавьте следующий код внутри тега `<databaseChangeLog>`:

```xml
<changeSet id="create-table" author="<your_name>">
    <createTable tableName="<your_table_name>">
        <column name="id" type="INT">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="name" type="VARCHAR(255)"/>
    </createTable>
</changeSet>
```

или

```yaml
  - createTable:
      tableName: your_table_name
      columns:
        - column:
            name: id
            type: INT
            constraints:
              primaryKey: true
              nullable: false
        - column:
            name: name
            type: VARCHAR(255)
```

4. Если вы хотите проверить наличие схемы перед созданием таблиц, добавьте блок `<preConditions>` перед тегом `<changeSet>`. Например:

```xml
<changeSet id="create-table" author="<your_name>">
    <preConditions onFail="MARK_RAN">
        <not>
            <schemaExists schemaName="<your_schema_name>"/>
        </not>
    </preConditions>
    <createTable tableName="<your_table_name>">
        <column name="id" type="INT">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="name" type="VARCHAR(255)"/>
    </createTable>
</changeSet>
```

или

```yaml
  - changeSet:
      id: 2
      author: your_name
      preConditions:
        - not:
            schemaExists:
              schemaName: your_schema_name
      createTable:
        tableName: your_table_name
        columns:
          - column:
              name: id
              type: INT
              constraints:
                primaryKey: true
                nullable: false
          - column:
              name: name
              type: VARCHAR(255)
```

5. Закройте файл сценария, добавив следующий код в конце:

```xml
</databaseChangeLog>
```

или

```yaml
```

6. Сохраните файл сценария.

7. Запустите команду Liquibase для применения сценария к базе данных. Например, для применения файла `changelog.xml`, используйте следующую команду:

```bash
liquibase --changeLogFile=changelog.xml --url=jdbc:postgresql://localhost:5432/mydatabase --username=myusername --password=mypassword update
```

или

```bash
liquibase --changeLogFile=changelog.yaml --url=jdbc:postgresql://localhost:5432/mydatabase --username=myusername --password=mypassword update
```

В результате Liquibase применит все изменения из файла сценария к базе данных, создаст схему (если она еще не существует) и создаст необходимые таблицы и другие объекты базы данных.

Помните, что вам нужно заменить `<your_schema_name>` на имя схемы, которую вы хотите создать или проверить, а `<your_table_name>` на имя таблицы
Похожие вопросы