我正在写下面的查询,想在指定的位置添加一列,但是得到了下面的错误信息。
alter table quantum_raw_dev.rpt_backup_allocation
change upt_type upt_type STRING after tray_size;
我认为在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元数据。
你不能在中间添加列。最好的方法是将数据归档到另一个表中。Drop the impala old table and create a fresh table with new columns as per the desired location and then reinsert the data.
你可以使用以下方法在列列表的末尾添加一个或多个列。
ALTER TABLE <table_name> ADD COLUMNS (col_name 栏目类型, ...);
[注意:列名和类型之间没有逗号]
你可以在Impala中使用ALTER TABLE添加新的列,如下所示。
替换所有列
你也可以用一个新的列列表完全替换所有的列。这对于删除多个列,或者需要在列表中间添加列很有帮助。 一般的语法是
ALTER TABLE tablename REPLACE COLUMNS (col1 TYPE1,col2 TYPE2,...)。
这将完全删除现有的列列表,并用新的列表代替。只有你在ALTER TABLE语句中指定的列才会存在,而且它们会按照你提供的顺序排列。
注意事项这不会改变数据文件,只会改变表的元数据,所以你要么希望新的列表与数据文件相匹配,要么需要重新创建数据文件来匹配新的列表。
以上就是小编为大家带来的关于 "新列表的使用方法 "的介绍,希望能对大家有所帮助。