跳到主要内容
版本:1.0.x

即席导入

列式摄取

介绍

列式摄取查询通过从另一个表中获取另一列的值来更新表中某个分区的某列的值。

示例: db.target

日期ID姓名收入
2021-01-011A4
2021-01-012B5
2021-01-013C6

db.source

日期ID姓名
2021-01-011aa
2021-01-012bb
2021-01-014cc
ALTER TABLE db.target INGEST PARTITION '2021-01-01' COLUMNS Name KEY ID FROM db.source

执行查询后的 db.target

日期ID姓名收入
2021-01-011aa4
2021-01-012bb5
2021-01-0136
2021-01-014dd0

如果目标表的 ingest_default_column_value_if_not_provided 设置为0(通过在创建表时使用以下语法实现),则 ID = 3 的行的 Name 值可以保持为 C。

CREATE TABLE db.target
(
`date` Date,
`id` Int32,
`name` String
)
ENGINE = CnchMergeTree
PARTITION BY date
ORDER BY id
SETTINGS ingest_default_column_value_if_not_provided = 0

在这种情况下,结果将是

日期ID姓名收入
2021-01-011aa4
2021-01-012bb5
2021-01-013C6
2021-01-014dd0

语法

ALTER TABLE db.target INGEST PARTITION xxx COLUMNS col1, col2 [KEY k1, k2] FROM db.temp_table

实现注意事项

列式摄取的主要执行将在工作节点中完成。