You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.1 KiB

Templating for Migration Sources

migrate-template a wrapper for migration sources of library golang-migrate/migrate that allows the use of variables in migrations files.

Use in your Go project

import (
	template ""

func main() {
	sourceInstance, err := source.Open("file://migration")
	templateInstance := template.Wrap(
			"cluster": "cluster_name",
			"replicated_path": "/clickhouse/tables/db_name",

	m, err := migrate.NewWithSourceInstance(
		"template", templateInstance,

Migration template using variables:

CREATE TABLE table_name ON CLUSTER {{.cluster}} (
	foo Int64,
	bar String
) ENGINE = ReplicatedReplacingMergeTree('{{.replicated_path}}.table_name', '{replica}')


CREATE TABLE table_name ON CLUSTER cluster_name (
	foo Int64,
	bar String
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/db_name.table_name', '{replica}')