我可以使用以下命令将数据加载到配置单元:
LOAD DATA INPATH '/xx/person/a.csv' INTO TABLE person PARTITION (age = 30);
在上述声明中, age=30 是必须存储数据的分区。如果一个.csv里面有“年龄”列呢?有没有办法让配置单元用一条load data语句将.csv的每一行正确地插入到我的person表的右侧分区中?
age=30
a2mppw5e1#
load data只支持静态分区:“当load data语句在分区表上操作时,它总是一次在一个分区上操作。”另一方面,insert支持动态分区:“如果提到了分区键列,但没有为其赋值,[…]未赋值的列将用select列表的最后一列填充。”因此,您可以在源数据上定义一个表,也可以选择定义一个视图来将分区列移动到最终位置,最后使用 insert into [...] select [...] 从视图填充分区表。
insert into [...] select [...]
1条答案
按热度按时间a2mppw5e1#
load data只支持静态分区:“当load data语句在分区表上操作时,它总是一次在一个分区上操作。”
另一方面,insert支持动态分区:“如果提到了分区键列,但没有为其赋值,[…]未赋值的列将用select列表的最后一列填充。”
因此,您可以在源数据上定义一个表,也可以选择定义一个视图来将分区列移动到最终位置,最后使用
insert into [...] select [...]
从视图填充分区表。