Добавить новую колонку в VERTICA и сохранить старые прогнозы

Я хочу добавить столбец на любую позицию в моей таблице в VERTICA. То, что я делаю, - это создание новой таблицы с добавленным столбцом и копирование данных из старой таблицы в новую, а затем удаление старой таблицы. Но я также хочу скопировать старые прогнозы в новую таблицу. Как я должен это делать?

PS Я пишу автоматизированный код для этого.

2 ответа

Вы можете использовать этот синтаксис:

create table date_dimcopy like date_dimension including projections;

Спасибо

Ниже приведен еще один метод

Предполагается, что ниже приведена исходная таблица:

CREATE TABLE public.test5 (id int, zz int, zz1 int); СОЗДАТЬ ПРОЕКЦИЮ public.test5_prj ( id, zz, zz1) КАК ВЫБРАТЬ test5.id, test5.zz, test5.zz1 ИЗ public.test5 ЗАКАЗАТЬ по test5.id СЕГМЕНТИРОВАТЬ ПО ХЭШУ (test5.id) ВСЕ УЗЛЫ KSAFE 1;

И вам нравится копировать все проекции из исходной таблицы в целевую таблицу + добавление столбца посередине (тип new_id 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"

Наша новая проекция, отражающая вашу целевую стратегию

СОЗДАНИЕ ПРОЕКТА public.test5 /+ createtype (A)/ (id, new_id zz, zz1) AS SELECT test5.id, new_id test5.zz, test5.zz1 ИЗ public.test5 ORDER BY test5.id SEGMENTED BY hash(test5.id) ВСЕ УЗЛЫ KSAFE 1;

Другие вопросы по тегам