package clickhouse_api import ( "context" "github.com/google/uuid" "time" ) func BatchInsert() error { conn, err := GetNativeConnection(nil, nil, nil) if err != nil { return err } ctx := context.Background() defer func() { conn.Exec(ctx, "DROP TABLE example") }() conn.Exec(context.Background(), "DROP TABLE IF EXISTS example") err = conn.Exec(ctx, ` CREATE TABLE IF NOT EXISTS example ( Col1 UInt8 , Col2 String , Col3 FixedString(3) , Col4 UUID , Col5 Map(String, UInt8) , Col6 Array(String) , Col7 Tuple(String, UInt8, Array(Map(String, String))) , Col8 DateTime ) Engine = Memory `) if err != nil { return err } batch, err := conn.PrepareBatch(ctx, "INSERT INTO example") if err != nil { return err } defer batch.Close() for i := 0; i < 1000; i++ { err := batch.Append( uint8(42), "ClickHouse", "Inc", uuid.New(), map[string]uint8{"key": 1}, // Map(String, UInt8) []string{"Q", "W", "E", "R", "T", "Y"}, // Array(String) []any{ // Tuple(String, UInt8, Array(Map(String, String))) "String Value", uint8(5), []map[string]string{ {"key": "value"}, {"key": "value"}, {"key": "value"}, }, }, time.Now(), ) if err != nil { return err } } return batch.Send() }