Hive 更改 VARCHAR 中的 table 列大小
Hive Alter table column size in VARCHAR
我是 Hive 的新手,几个月前我在下面创建了一个 table
create table TableName
(
EntityRelationship varchar(20),
EntityID varchar(50),
EntityName varchar(50),
CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)
但是,现在我意识到 EntityName Varchar(50)
还不够,还需要 Varchar(250)
。我找到了 alter table 代码,但它们都没有改变列的大小,而是改变了类型和名称。
我也不能删除 table,因为它已经有很多数据,这意味着我必须每天重新加载过去几个月。
我想要的结局table如下所述
create table TableName
(
EntityRelationship varchar(20),
EntityID varchar(50),
EntityName varchar(250),
CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)
我是否可以在不删除 table 的情况下将现有的 table 更改为 EntityName varchar(250)
?珍惜你的时间。谢谢
改变 TABLE table_name 改变列 column_name 类型 varchar(250);
这可能有帮助
ALTER TABLE TableName CHANGE COLUMN EntityName EntityName varchar(250);
@YJG 如果您的 alter 语句不影响列大小,您可能没有其他机会,只能构建一个新的 table 您想要的格式,INSERT INTO newTable SELECT * FROM旧表。然后将oldTable重命名为backupTable,将newTable重命名为oldTable。当更改原始 table 模式不起作用时,有时需要这种通过暂存 table 移动数据的方法。
我是 Hive 的新手,几个月前我在下面创建了一个 table
create table TableName
(
EntityRelationship varchar(20),
EntityID varchar(50),
EntityName varchar(50),
CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)
但是,现在我意识到 EntityName Varchar(50)
还不够,还需要 Varchar(250)
。我找到了 alter table 代码,但它们都没有改变列的大小,而是改变了类型和名称。
我也不能删除 table,因为它已经有很多数据,这意味着我必须每天重新加载过去几个月。
我想要的结局table如下所述
create table TableName
(
EntityRelationship varchar(20),
EntityID varchar(50),
EntityName varchar(250),
CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)
我是否可以在不删除 table 的情况下将现有的 table 更改为 EntityName varchar(250)
?珍惜你的时间。谢谢
改变 TABLE table_name 改变列 column_name 类型 varchar(250);
这可能有帮助
ALTER TABLE TableName CHANGE COLUMN EntityName EntityName varchar(250);
@YJG 如果您的 alter 语句不影响列大小,您可能没有其他机会,只能构建一个新的 table 您想要的格式,INSERT INTO newTable SELECT * FROM旧表。然后将oldTable重命名为backupTable,将newTable重命名为oldTable。当更改原始 table 模式不起作用时,有时需要这种通过暂存 table 移动数据的方法。