我在hivedb中有一个带有array-type列的表,我想将它与内容一起复制到vertica db。vertica db的版本是v9.0.1-0,我无法创建数组类型的表。复制我试图使用的表
COPY vertica_schema.destination FROM hive_table_path ON ANY NODE ORC;
但是有一张空table。你能帮我把table和covert配置单元数组int类型复制到vertica varchar类型吗?例如,vertica varchar值可以如下所示: [1, 1, 1]
或者 {1, 1, 1}
.
vertica目标表初始化:
CREATE TABLE vertica_schema.destination (
col_a INTEGER NOT NULL,
col_array VARCHAR(200), -- ARRAY[INTEGER] not working
) ORDER BY id
UNSEGMENTED ALL NODES;
配置单元源表初始化:
create table source
(
col_a int,
col_array array<int>
) stored as orc;
insert into source select 1, array(1, 2, 3);
insert into source select 2, array(2, 2, 2);
insert into source select 3, array(3, 3, 3);
2条答案
按热度按时间gmol16391#
你可以尝试另一种方法。
首先在中创建阶段表
Hive
喜欢带源表的第二个加载目标阶段
第三步是转换col\ u类型的数组
INT
放入类型的列数组中STRING
,您可以按此链接执行该任务如何在配置单元中将int数组的元素连接到字符串
最后一步是加载
vertica_schema.destination
从目的地阶段。3ks5zfa02#
分解数组,将元素强制转换并收集到字符串数组中(如有必要,加载到暂存表中):