Create table ClickHouse
API
For the full list of supported methods, see CreateTableQuery.
db.NewCreateTable().
Model(&strct).
Table("table1"). // quotes table names
TableExpr("table1"). // arbitrary unsafe expression
ModelTableExpr("table1"). // overrides model table name
IfNotExists().
Partition("toDate(time)").
Order("col1, col2").
TTL("toDate(time) + INTERVAL 30 DAY DELETE").
Setting("ttl_only_drop_parts = 1").
Exec(ctx)
Example
To create a table, define a model and use CreateTableQuery:
type Span struct {
ch.CHModel `ch:"table:spans,insert:spans_buffer"`
ID uint64
Name string `ch:",lc"` // low cardinality column
Time time.Time
}
res, err := db.NewCreateTable().Model((*Span)(nil)).
TTL("time + INTERVAL 30 DAY DELETE").
Partition("toDate(time)").
Order("time").
Setting("ttl_only_drop_parts = 1").
Exec(ctx)
ResetModel
go-clickhouse provides ResetModel
method to quickly drop and create tables:
err := db.ResetModel(ctx, (*Model1)(nil), (*Model2)(nil))
DROP TABLE IF EXISTS model1 CASCADE;
CREATE TABLE model1 (...);
DROP TABLE IF EXISTS model2 CASCADE;
CREATE TABLE model2 (...);