在VERTICA中添加新列并保留旧投影

时间:2016-03-13 05:28:24

标签: vertica

我想在VERTICA中的表格中的任何位置添加一列。我正在做的是创建添加列的新表并将数据从旧表复制到新表然后删除旧表。但我也想将旧的投影复制到新表中。我该怎么办?

P.S。我正在为它编写一个自动代码。

2 个答案:

答案 0 :(得分:0)

您可能希望使用以下语法:

create table date_dimcopy like date_dimension including projections;

谢谢

答案 1 :(得分:0)

以下是另一种方法

以下是您的源表:

CREATE TABLE public.test5(id int,zz int,zz1 int); CREATE PROJECTION public.test5_prj(id,zz,zz1)AS SELECT test5.id,test5.zz,test5.zz1 FROM public.test5 ORDER BY test5.id SEGMENTED by hash(test5.id)ALL NODES KSAFE 1;

您希望将所有投影从源表复制到目标表+在中间添加列(new_id type int)

您可以使用以下技术来修改源投影以反映您的目标结构

[dbadmin @ mydphdb0184~] $ echo“select export_objects('','public.test5');”| vsql -U dbadmin -w dbadmin | sed -n'/ CREATE PROJECTION /,/; / p'| sed“s / id,/ id,new_id / g”

取消反映目标位置的新投影

创建PROJECTION public.test5 / + createtype(A) / (  ID,NEW_ID  Z Z,  ZZ1 ) 如  SELECT test5.id,new_id         test5.zz,         test5.zz1  来自public.test5  ORDER BY test5.id 散列的分段(test5.id)ALL NODES KSAFE 1;