首页 > 解决方案 > HiveSQL Alter 表重命名列并且不移动数据

问题描述

我有一张有 100 列的表。我想将此表中的一列移动到新位置。

例如,我的表(名为“sample_table”)如下所示:

var1, var2, var3, var4
w,    x,    y,    z

本质上,我想创建一个如下所示的表:

var1, var2, var4, var3
w,    x,    z,    y

我试过使用:

ALTER TABLE sample_table CHANGE var3
var3 STRING AFTER var4

但我得到:

var1, var2, var4, var3
w,    x,    y,    z 

所以我所做的只是重命名最后一列而不移动该列中的数据。

我知道我可以编写一个 create table 语句并使用其中的 select 语句将列按需要的顺序排列。但是,当我有 100 列并且只需要在整个表中移动一列时,这似乎非常低效。

我将如何移动整个列而不仅仅是重命名它?

非常感谢。

标签: sqlhiveql

解决方案


您可以使用多个语句:

ALTER TABLE sample_table CHANGE var3 var3_ STRING;
ALTER TABLE sample_table CHANGE var4 var3 STRING;
ALTER TABLE sample_table CHANGE var3_ var4 STRING;

推荐阅读