如何在Vertica中重命名表和投影?

时间:2015-11-03 00:24:59

标签: vertica

我必须更改Vertica表中的许多列,并决定完全删除表并创建一个新列。我还需要“撤消”脚本,以便在需要时恢复更改(使用mybatis迁移)。

这是我的计划:

rename mytable to mytable_backup

create mytable
create projection mytable_super (as select from mytable)


--undo
drop mytable if exists
rename mytable_backup to mytable

原始mytable也是用投影创建的。上面的脚本给出了一个错误,说投影已经存在。

 DBCException: SQL Error [4482] [42710]: [Vertica][VJDBC](4482) ROLLBACK:         Projection with base name "mytable_super" already exists

我相信当我重命名原始表时,基础投影不会被重命名。

在vertica中使用投影重命名表的最佳方法是什么?或者,备份表并恢复原状的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您也需要rename the projections

alter projection mytable_super rename to mytable_super_backup;

答案 1 :(得分:0)

对于重命名表,上面的答案就是一个。

重命名投影的一种方法是将投影放入SQL文件中。例如:

 select CONCAT(CONCAT(projection_schema,'.'),projection_name) from projections where projection_schema like '%one_table%'

然后将其修改为以下SQL并执行(并且不要忘记运行刷新): https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/Projections/UpdatingProjectionsUsingRefresh.htm

一旦有了SQL,就可以执行\i /path/of/sql(在vertica外壳内)或/opt/vertica/bin/vsql -f /path/to/sql/that.sql -U vertica_user -w vertica_passwd