【问题标题】:Hive Alter table column size in VARCHARHive 在 VARCHAR 中更改表列大小
【发布时间】:2020-08-02 12:57:40
【问题描述】:

我是 Hive 的新手,几个月前我在下面创建了一个表格

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 codes,但它们都没有改变列的大小,而是改变了类型和名称。

我也不能删除表格,因为它已经有很多数据,这意味着我必须每天重新加载过去的几个月。

我希望结束表如下所示

create table TableName 
( 
    EntityRelationship varchar(20), 
    EntityID varchar(50), 
    EntityName varchar(250), 
    CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)

我可以在不删除表格的情况下将这个现有表格更改为EntityName varchar(250)吗?珍惜你的时间。谢谢

【问题讨论】:

    标签: datatable hive size varchar alter-table


    【解决方案1】:
    ALTER TABLE TableName CHANGE COLUMN EntityName EntityName  varchar(250);
    

    阅读更多详情:Change Column Name/Type/Position/Comment

    【讨论】:

    • 感谢@leftjoin 代码完美运行。为我节省了很多工作。
    【解决方案2】:

    ALTER TABLE table_name ALTER COLUMN column_name TYPE varchar(250);

    希望对您有帮助

    【讨论】:

      【解决方案3】:

      @YJG 如果您的 alter 语句不影响列大小,您可能没有其他机会构建您想要的格式的新表,INSERT INTO newTable SELECT * FROM oldTable。然后将oldTable重命名为backupTable,将newTable重命名为oldTable。当更改原始表架构不起作用时,有时需要这种通过临时表移动数据的方法。

      【讨论】:

        猜你喜欢
        • 2014-05-05
        • 1970-01-01
        • 2010-09-15
        • 2012-02-08
        • 2011-12-05
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        • 2021-01-30
        相关资源
        最近更新 更多