Gorm:使用数组列批量插入 ClickHouse

Gorm: Batch insert into ClickHouse with Array columns

我想批量插入数据到我们的 ClickHouse 数据库中。使用gorm,我可以轻松使用

type audit struct{
 field1 string `json:"field1"`,
 field2 string `json:"field2"`, 
}

chDB.Table(tableName).CreateInBatches(audits, 5)

但是,如果audit包含如下数组字段,其他字段的数据仍然会保存在数据库中。只有带数组的字段(如下field1)不会被保存。

type audit struct{
 field1 []string `json:"field1"`,
 field2 string   `json:"field2"`, 
}

chDB.Table(tableName).CreateInBatches(audits, 5)

错误:[error] unsupported data type: &[]

只有当我准备一个语句并保存数据时它才有效。但是,在那种情况下,它不再是批量插入

sqlDB, err := db.DB()
tx, err := sqlDB.Begin()
stmt, err := tx.PrepareContext(ctx, `insert into audit_table (field1, field2) values (?, ?)`)
_, err = stmt.ExecContext(ctx, clickhouse.Array(audit.field1), audit.field2)
err = tx.Commit()

有人可以帮我解决这个问题吗?如何将数组数据批量插入到 ClickHouse 列中?

您可能需要 clickhouse.Array 类型以插入 clickhouse.Array

type audit struct{
 field1 clickhouse.Array `json:"field1"`,
 field2 string           `json:"field2"`, 
}

audits := audit{
  field1: clickhouse.Array([]string{"one", "three"}),
  field2: "two"
}

chDB.Table(tableName).CreateInBatches(audits, 5)