2

我错误地用 table 执行了以下ALTER语句stocks

ALTER TABLE stocks
CLUSTERED BY (exchange, symbol)
INTO 48 BUCKETS;

如何撤消此命令?

4

1 回答 1

3

如果表是托管的,则将其设为外部:

ALTER TABLE stocks SET TBLPROPERTIES('EXTERNAL'='TRUE');

描述表并记下它的位置、serde 属性并检查它是外部的:

describe formatted stocks;  

然后删除表并再次创建指定位置,数据将保留在 EXTERNAL 表中:

   DROP TABLE stocks; 

    CREATE EXTERNAL TABLE stocks(
            columns definition)
        STORED AS TEXTFILE --use the same DDL 
        location '/table_location_path'; --use the same path from describe table

或者,您可以使用指向同一位置的另一个名称创建表,检查它是否有效,将第一个表设为 EXTERNAL,删除它,使用重命名第二个表

ALTER TABLE tablename RENAME TO stocks.

于 2018-11-01T15:57:40.030 回答