Добавить новую колонку в 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;