mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-20 08:03:53 +08:00
36 lines
971 B
Go
36 lines
971 B
Go
package clickhouse
|
|
|
|
import "github.com/ClickHouse/clickhouse-go/lib/data"
|
|
|
|
func (ch *clickhouse) sendExternalTables(externalTables []ExternalTable) error {
|
|
ch.logf("[send external tables] count %d", len(externalTables))
|
|
if externalTables == nil || len(externalTables) == 0 {
|
|
return nil
|
|
}
|
|
block := &data.Block{}
|
|
sentTables := make(map[string]bool, 0)
|
|
for _, externalTable := range externalTables {
|
|
if _, ok := sentTables[externalTable.Name]; ok {
|
|
continue
|
|
}
|
|
ch.logf("[send external table] name %s", externalTable.Name)
|
|
sentTables[externalTable.Name] = true
|
|
block.Columns = externalTable.Columns
|
|
block.NumColumns = uint64(len(externalTable.Columns))
|
|
for _, row := range externalTable.Values {
|
|
err := block.AppendRow(row)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if err := ch.writeBlock(block, externalTable.Name); err != nil {
|
|
return err
|
|
}
|
|
if err := ch.encoder.Flush(); err != nil {
|
|
return err
|
|
}
|
|
block.Reset()
|
|
}
|
|
return nil
|
|
}
|