Golang migrate.New как указывать параметры для Clickhouse
Библиотека migrate
(из пакета github.com/golang-migrate/migrate) поддерживает ClickHouse как источник данных для миграций. Чтобы использовать migrate.New
или другие методы для миграции в ClickHouse, параметры подключения задаются через строку DSN.
Указание параметров для ClickHouse в migrate
При использовании migrate.New
для работы с ClickHouse, строка подключения указывается в следующем формате:
1 2 |
clickhouse://<username>:<password>@<host>:<port>/<database>?<query_parameters> |
<username>
: Имя пользователя (по умолчаниюdefault
).<password>
: Пароль (по умолчанию пустой).<host>
: Хост ClickHouse (например,127.0.0.1
).<port>
: Порт (обычно9000
).<database>
: Имя базы данных.<query_parameters>
: Дополнительные параметры подключения.
Пример использования migrate.New
с ClickHouse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package main import ( "log" "github.com/golang-migrate/migrate/v4" _ "github.com/golang-migrate/migrate/v4/database/clickhouse" // для ClickHouse _ "github.com/golang-migrate/migrate/v4/source/file" // для чтения миграций из файлов ) func main() { // Строка подключения к ClickHouse dsn := "clickhouse://default:@127.0.0.1:9000/default" // Путь к файлам миграций migrationsPath := "file://path/to/migrations" // Создание экземпляра миграций m, err := migrate.New(migrationsPath, dsn) if err != nil { log.Fatalf("Failed to create migration instance: %v", err) } // Применение всех миграций if err := m.Up(); err != nil && err != migrate.ErrNoChange { log.Fatalf("Failed to apply migrations: %v", err) } log.Println("Migrations applied successfully!") } |
Поддерживаемые параметры строки DSN
Для ClickHouse поддерживаются следующие параметры в строке DSN:
read_timeout
: Тайм-аут чтения (например,10s
).write_timeout
: Тайм-аут записи.secure
: Включение TLS-соединения (true
илиfalse
).debug
: Включение отладочного режима (true
илиfalse
).compress
: Использовать сжатие (true
илиfalse
).
Примеры строк DSN
- Подключение без пароля
12clickhouse://default:@127.0.0.1:9000/default - С параметрами отладки и сжатия
12clickhouse://default:@127.0.0.1:9000/default?debug=true&compress=true - С тайм-аутами
12clickhouse://default:@127.0.0.1:9000/default?read_timeout=10s&write_timeout=10s - С TLS
12clickhouse://default:@127.0.0.1:9440/default?secure=true
Организация миграций
- Формат миграционных файлов Миграции для ClickHouse обычно пишутся в формате SQL-файлов:
1230001_create_table.up.sql0001_create_table.down.sql - Пример содержимого миграции
0001_create_table.up.sql
:
1234567CREATE TABLE example (id UInt64,name String,created_at DateTime) ENGINE = MergeTree()ORDER BY id;0001_create_table.down.sql
:
12DROP TABLE example;
Установка библиотеки migrate
Убедитесь, что библиотека migrate
и её зависимости для ClickHouse установлены:
1 2 3 4 |
go get -u github.com/golang-migrate/migrate/v4 go get -u github.com/golang-migrate/migrate/v4/database/clickhouse go get -u github.com/golang-migrate/migrate/v4/source/file |