我想在Impala Query中的现有表中添加两个列名。

问题描述 投票:0回答:1

我正在写下面的查询,想在指定的位置添加一列,但是得到了下面的错误信息。

alter table quantum_raw_dev.rpt_backup_allocation
change upt_type upt_type STRING after tray_size;
impala
1个回答
0
投票

我认为在Impala中不能像上面那样在列间添加列。你可以备份数据,删除并重新创建新的结构,然后从备份中加载表。如果你的系统中有HIVE,你可以尝试做以下步骤--先添加列,然后使用下面的命令来移动列。 ALTER TABLE tab ADD COLUMNS (id BIGINT); 这将id列移动到开头。ALTER TABLE tab CHANGE COLUMN id id BIGINT first; 这将existing_col移到id后面。ALTER TABLE tab CHANGE COLUMN existing_col existing_col string AFTER id;

请在应用所有DDL后刷新validate元数据。


0
投票

你不能在中间添加列。最好的方法是将数据归档到另一个表中。Drop the impala old table and create a fresh table with new columns as per the desired location and then reinsert the data.


0
投票

你可以使用以下方法在列列表的末尾添加一个或多个列。

ALTER TABLE <table_name> ADD COLUMNS (col_name 栏目类型, ...);

[注意:列名和类型之间没有逗号]


0
投票

你可以在Impala中使用ALTER TABLE添加新的列,如下所示。

替换所有列

你也可以用一个新的列列表完全替换所有的列。这对于删除多个列,或者需要在列表中间添加列很有帮助。 一般的语法是

ALTER TABLE tablename REPLACE COLUMNS (col1 TYPE1,col2 TYPE2,...)。

这将完全删除现有的列列表,并用新的列表代替。只有你在ALTER TABLE语句中指定的列才会存在,而且它们会按照你提供的顺序排列。

注意事项这不会改变数据文件,只会改变表的元数据,所以你要么希望新的列表与数据文件相匹配,要么需要重新创建数据文件来匹配新的列表。

以上就是小编为大家带来的关于 "新列表的使用方法 "的介绍,希望能对大家有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.