Liquibase - DmitryGontarenko/usefultricks GitHub Wiki
Создание скрипта миграции для базы данных с помощью yaml
формата.
В данном примере мы создаем таблицу users
с полями id
, name
и email
, и заполняем их.
databaseChangeLog:
- preConditions:
- runningAs:
username: report_user
- changeSet:
id: users-table-1
author: root
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: int
constraints:
primaryKey: true
nullable: false
- column:
name: name
type: varchar(50)
constraints:
nullable: false
- column:
name: email
type: varchar(128)
constraints:
nullable: false
unique: true
- changeSet:
id: user-table-2
author: root
changes:
- insert:
tableName: users
columns:
- column:
name: id
value: 1
- column:
name: name
value: "John"
- column:
name: email
value: "[email protected]"
Описание CSV-формата в рамках статьи о Liquibase.
CSV (Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.
- Каждая строка файла - это одна строка таблицы базы данных;
- Разделителем (delimiter) значений колонок является символ запятая (
,
); - Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками (
"
). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.
Файлы формата .csv
можно использовать для заполнения таблицы базы данных. Для этого необходимо:
- Создать
changeSet
в файле-миграций, например:
<changeSet id="fill_tb_customer" author="dmitriy">
<loadData file="fill_tb_customer.csv"
tableName="tb_customer" relativeToChangelogFile="true"/>
</changeSet>
В атрибуте file
указываем путь до csv
файла.
Атрибут relativeToChangelogFile="true"
показывает, что файл будет находиться по пути относительно корневому каталогу, иначе поиск будет производиться в папке resources
.
- Создаем наш
.csv
файл. В данном примере будет заполняться уже ранее созданная таблица, которая имеет поля: id, name, age, address и phone.
id,name,age,address,phone
1,Dolores,18,3842 Morris Street,830-351-1525
2,Justin G. Wadley,24,3069 Oakmound Road,773-233-8821
3,Jeff T. Mays,22,2603 Olive Street,419-343-7541
Стоит отметить, что вставка с помощью .scv
файла не работает для полей типа text
. Об этой проблеме можно почтить здесь или здесь.
Intellij idea поддерживает работу с .csv
расширение. Если навести курсор на какое-либо значение, во всплыващем окне будет показано, к какому полю это значение относится. Или же можно перейти на вкладку Table Editor
, там значения отображаются в табличном представлении.
Плагин для работы с scv
для Intellij idea можно скачать здесь.