package clickhouse_api import ( "context" "time" ) func ColumnInsert() 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(ctx, `DROP TABLE IF EXISTS example`) if err = conn.Exec(ctx, ` CREATE TABLE example ( Col1 UInt64 , Col2 String , Col3 Array(UInt8) , Col4 DateTime ) ENGINE = Memory `); err != nil { return err } batch, err := conn.PrepareBatch(context.Background(), "INSERT INTO example") if err != nil { return err } var ( col1 []uint64 col2 []string col3 [][]uint8 col4 []time.Time ) for i := 0; i < 1_000; i++ { col1 = append(col1, uint64(i)) col2 = append(col2, "Golang SQL database driver") col3 = append(col3, []uint8{1, 2, 3, 4, 5, 6, 7, 8, 9}) col4 = append(col4, time.Now()) } if err := batch.Column(0).Append(col1); err != nil { return err } if err := batch.Column(1).Append(col2); err != nil { return err } if err := batch.Column(2).Append(col3); err != nil { return err } if err := batch.Column(3).Append(col4); err != nil { return err } // AppendRow is a shortcut for Append(row) if err := batch.Column(0).AppendRow(uint64(1_000)); err != nil { return err } if err := batch.Column(1).AppendRow("Golang SQL database driver"); err != nil { return err } if err := batch.Column(2).AppendRow([]uint8{1, 2, 3, 4, 5, 6, 7, 8, 9}); err != nil { return err } if err := batch.Column(3).AppendRow(time.Now()); err != nil { return err } return batch.Send() }