日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創建和刪除表

本文為您介紹表創建和刪除的相關操作命令。

類型

功能

角色

操作入口

創建表

創建非分區表、分區表、外部表或聚簇表。

具備項目創建表權限(CreateTable)的用戶。

本文中的命令您可以在如下工具平臺執行:

刪除表

刪除分區表或非分區表。

具備刪除表權限(Drop)的用戶。

創建表

創建非分區表、分區表、外部表或聚簇表。

使用限制

  • 分區表的分區層級不能超過6級。例如某張表以日期為分區列,分區層級為年/月/周/日/時/分

  • 一張表允許的分區個數支持按照具體的項目配置,默認為6萬個。

更多表的限制條件,請參見SQL使用限制項

命令格式

  • 創建內部表。

    CREATE [OR REPLACE] TABLE [IF NOT EXISTS] <table_name> (
    <col_name> <data_type>, ... )
    [comment <table_comment>]
    [PATITIONED BY (<col_name> <data_type> [comment <col_comment>], ...)];
  • 創建聚簇表。

    CREATE TABLE [IF NOT EXISTS] <table_name> (
    <col_name> <data_type>, ... )
    [CLUSTERED BY | RANGE CLUSTERED BY (<col_name> [, <col_name>, ...]) 
    [SORTED BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] 
    INTO <number_of_buckets> buckets];
  • 創建外部表。

    以OSS外部表為例,通過內置文本數據解析器創建外部表。詳情請參見創建OSS外部表

    CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name> ( 
    <col_name> <data_type>, ... ) 
    STORED AS '<file_format>' 
    [WITH SERDEPROPERTIES (options)]  
    LOCATION '<oss_location>';
  • 創建表并指定表類型。

    • 指定表為Transactional表。后續可以對該表執行更新或刪除表數據操作,但是Transactional表有部分使用限制,請根據需求創建。

      CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> (
      <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
      [PRIMARY KEY (<pk_col_name>[, <pk_col_name2>, ...] )])
      [comment <table_comment>]
      [TBLPROPERTIES ("transactional"="true")];
    • 指定表為Delta Table表。結合PRIMARY KEY,后續可以做upsert、增量查詢和Time Travel等操作。

      CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> (
      <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
      [PRIMARY KEY (<pk_col_name>[, <pk_col_name2>, ...] )]) 
      [comment <table_comment>]
      [TBLPROPERTIES ("transactional"="true" 
      [, "write.bucket.num" = "N", "acid.data.retain.hours"="hours"...])] [lifecycle <days>];
  • 基于已存在表創建新表。

    • 基于已存在的表創建新表并復制數據,但不復制分區屬性。支持外部表和湖倉一體外部項目中的表。

      CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] AS <select_statement>;
    • 基于已存在的表創建具備相同結構的新表,但不復制數據。支持外部表和湖倉一體外部項目中的表。

      CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] LIKE <existing_table_name>;

參數說明

通用參數

參數

是否必填

說明

備注

OR REPLACE

若<table_name>已經存在,則對現有表使用DROP TABLE,然后創建具有相同名稱的新表進行替換。

等效于執行如下兩條命令:

DROP TABLE IF EXISTS <tableName>;  -- 假如目標表存在,則先刪除它
CREATE TABLE <tableName> ...;      -- 創建表
說明

使用限制:CREATE OR REPLACE TABLE暫不支持和以下語法共用。

  • CREATE TABLE ... IF NOT EXISTS。

  • CREATE TABLE ... AS SELECT。

  • CREATE TABLE ... LIKE。

EXTERNAL

創建的表為外部表。

IF NOT EXISTS

確認庫中是否已存在創建表名。

如果不指定IF NOT EXISTS選項而存在同名表,會報錯。如果指定IF NOT EXISTS,只要存在同名表,即使原表結構與要創建的目標表結構不一致,均返回成功。已存在的同名表的元數據信息不會被改動。

table_name

表名。

表名大小寫不敏感,不能有特殊字符,只能包含a~z、A~Z、數字和下劃線(_)。建議以字母開頭,名稱的長度不超過128字節,否則報錯。

PRIMARY KEY(pk)

表的主鍵。

可以定義一個或多個列作為主鍵,表示這些列的組合在表中必須唯一,語法遵循標準SQL primary key語法,pk列必須設置NOT NULL,不允許修改。

col_name

表的列名。

列名大小寫不敏感,不能有特殊字符,只能包含a~z、A~Z、數字、下劃線(_)或中文。建議以字母開頭,名稱的長度不超過128字節,否則報錯。

col_comment

列名的注釋。

注釋內容為長度不超過1024字節的有效字符串,否則報錯。

data_type

列的數據類型。

包含BIGINT、DOUBLE、BOOLEAN、DATETIME、DECIMAL和STRING等多種數據類型,詳情請參見數據類型版本說明

NOT NULL

禁止該列的值為NULL。

更多修改非空屬性信息,請參見分區操作

default_value

列的默認值。

insert操作不指定該列時,將該列寫入默認值。

說明

當前默認值不支持函數,例如GETDATE()NOW()等。

table_comment

表注釋。

注釋內容為長度不超過1024字節的有效字符串,否則報錯。

LIFECYCLE

表的生命周期。

僅支持正整數。單位為天。

  • 非分區表:自最后一次修改表數據開始計算,經過days天后數據無改動,則您無需干預此表,MaxCompute會自動回收(類似drop table操作)。

  • 分區表:系統根據各分區的LastModifiedTime判斷是否需要回收分區。不同于非分區表,分區表的最后一個分區被回收后,該表不會被刪除。生命周期只能設定到表級別,不支持在分區級別設置生命周期。

分區表參數

參數

是否必填

說明

備注

PARTITIONED BY

指定分區表的分區字段。

col_name

表的分區列名

列名大小寫不敏感,不能有特殊字符,只能包含a~z、A~Z、數字、下劃線(_)或中文。建議以字母開頭,名稱的長度不超過128字節,否則報錯。

data_type

分區列的數據類型

MaxCompute 1.0版本僅支持STRING類型。MaxCompute 2.0版本擴充了分區類型,包含TINYINT、SMALLINT、INT、BIGINT、VARCHAR和STRING類型。詳情請參見數據類型版本說明。當使用分區字段對表進行分區時,新增分區、更新分區內數據和讀取分區數據均不需要做全表掃描,提高處理效率。

col_comment

分區列的注釋內容

注釋內容為長度不超過1024字節的有效字符串,否則報錯。

說明

分區值不能包含雙字節字符(如中文),必須以字母開頭,包含字母、數字和允許的字符,長度不超過255字節。允許的字符包括空格、冒號(:)、下劃線(_)、美元符號($)、井號(#)、英文句點(.)、感嘆號(!)和at(@),其他字符的行為未定義,例如轉義字符\t\n/

聚簇表參數

聚簇表分為Hash聚簇表和Range聚簇表兩種。

HASH聚簇表

參數

是否必填

說明

備注

CLUSTERED BY

指定Hash Key。

MaxCompute將對指定列進行Hash運算,按照Hash值分散到各個Bucket中。為避免數據傾斜和熱點,并取得較好的并行執行效果,CLUSTERED BY列適宜選擇取值范圍大,重復鍵值少的列。此外,為了達到join優化的目的,也應該考慮選取常用的Join或Aggregation Key,即類似于傳統數據庫中的主鍵。

SORTED BY

指定Bucket內字段的排序方式。

建議SORTED BYCLUSTERED BY保持一致,以取得較好的性能。此外,當指定SORTED BY子句后,MaxCompute將自動生成索引,并且在查詢時利用索引來加快執行。

number_of_buckets

指定哈希桶的數量。

該值必須填寫,且由數據量大小決定。此外,MaxCompute默認支持最多1111個Reducer,所以此處最多只支持1111個哈希桶。您可以使用set odps.stage.reducer.num =<并發數>;來提升這個限制,但最大不得超過4000,否則會影響性能。

說明

選擇哈希桶數目時,請您遵循以下兩個原則:

  • 哈希桶大小適中:建議每個Bucket的大小為500 MB左右。例如,分區大小估計為500 GB,粗略估算Bucket數目應該設為1000,這樣平均每個Bucket大小約為500 MB。對于特別大的表,500 MB的限制可以突破,每個Bucket在2 GB~3 GB左右比較合適。同時,可以結合set odps.stage.reducer.num=<并發數>;來突破1111個桶的限制。

  • 對于join優化場景,去除Shuffle和Sort步驟能顯著提升性能。因此要求兩個表的哈希桶數目成倍數關系,例如256和512。建議哈希桶的數量統一使用2n,例如512、1024、2048或4096,這樣系統可以自動進行哈希桶的分裂和合并,也可以去除Shuffle和Sort的步驟,提升執行效率。

RANGE聚簇表

參數

是否必填

說明

備注

RANGE CLUSTERED BY

指定范圍聚簇列。

MaxCompute將對指定列進行分桶運算,按照分桶編號分散到各個Bucket中。

SORTED BY

指定Bucket內字段排序方式。

使用方法與Hash聚簇表相同。

number_of_buckets

指定哈希桶的數量。

Range聚簇表的Bucket桶數沒有Hash聚簇表的2n最佳實踐,在數據量分布合理的情況下,任何桶數都可以。Range聚簇表的Bucket數不是必須的,可以省略,此時系統會根據數據量自動決定最佳的Bucket數目。

當Join或Aggregation的對象是Range聚簇表,且Join Key或Group Key是Range Clustering Key或其前綴時,可以通過控制Flag消除數據的重分布,即Shuffle Remove,提升執行效率。您可以通過set odps.optimizer.enable.range.partial.repartitioning=true/false;進行設置,默認關閉。

說明
  • 聚簇表的優點:

    • 優化Bucket Pruning。

    • 優化Aggregation。

    • 優化存儲。

  • 聚簇表的限制:

    • 不支INSERT INTO,只能通過INSERT OVERWRITE來添加數據。

    • 不支持Tunnel直接Upload到Range聚簇表,因為Tunnel上傳數據是無序的。

    • 不支持備份恢復功能。

外部表參數

本示例以OSS外部表創建參數為例。更多外部表創建,詳情請參見外部數據源

參數

是否必填

說明

STORED AS '<file_format>'

按照外部表數據格式指定file_format。

WITH SERDEPROPERTIES(options)

外部表的授權、壓縮、字符解析等相關參數。

oss_location

外部表數據OSS存儲位置,詳情請參見創建OSS外部表

Transaction Table與Delta Table表參數

Transaction Table表參數

參數

是否必填

說明

TBLPROPERTIES(transactional"="true")

設置表為Transactional表。后續可以對Transactional表執行updatedelete操作實現行級更新或刪除數據。更多信息,請參見更新或刪除數據(UPDATE | DELETE)

Transactional表的使用限制如下:

  • MaxCompute只允許在創建表時設置Transactional屬性。已創建的表不允許通過ALTER TABLE方式修改Transactional屬性,執行如下語句會報錯:

    ALTER TABLE not_txn_tbl SET tblproperties("transactional"="true");
    --報錯。
    FAILED: Catalog Service Failed, ErrorCode: 151, Error Message: Set transactional is not supported
  • 在創建表時,不支持將聚簇表、外部表設置為Transactional表。

  • 不支持MaxCompute內部表、外部表、聚簇表與Transactional表互轉。

  • 不支持自動合并Transactional表文件,需要手動執行合并操作,詳情請參見合并Transactional表文件

  • 不支持merge partition操作。

  • 其他系統的作業訪問Transactional表有一些限制,例如Graph不支持讀寫;Spark、PAI只支持讀,不支持寫。

Delta Table表參數

Delta Table是一種可支持近實時讀寫,增量存儲和讀寫,實時更新等能力的表格式,目前只支持主鍵表。

參數

是否必填

說明

備注

PRIMARY KEY(PK)

創建Delta Table主鍵表時必填,可包含多列。

語法遵循標準SQL primary key語法,PK列必須設置not null,不允許修改。 設置后,后續表數據會根據PK列進行去重,Unique約束在單個partition范圍內有效,或非分區表內有效。

transactional

創建Delta Table類型表時必填,必須設置為true。

表示符合MaxCompute的ACID表的事務特性,采用MVCC事務管理模式,保證快照隔離級別。

write.bucket.num

默認取值為16,取值范圍為(0, 4096]

表示每個partition或者非分區表的分桶數量,也表示數據寫入的并發節點數量。分區表支持修改,新分區默認生效,非分區表不支持修改。該參數用法可參考如下建議:

  • 如果是通過Tunnel導入,代表Tunnel并發節點數,設置結果會影響導入流量,也會受Tunnel最大并發節點數約束。

  • 如果是通過SQL寫入,代表寫入數據的Reducer的并發度,受Reducer最大并發節點數約束。

  • 建議每個Bucket的數據寫入大小為500 MB左右。例如,分區大小估計為500 GB,粗略估算Bucket數目應該設為1000,這樣平均每個Bucket大小約為500 MB。對于特別大的表,500 MB的限制可以突破,每個Bucket在2 GB到3 GB左右比較合適。

acid.data.retain.hours

默認取值為24,取值范圍為[24, 168]

表示TimeTravel可查詢數據歷史狀態的時間范圍(單位為小時)。若需要超過168小時(7天)的長時間TimeTravel歷史回溯,可聯系MaxCompute技術支持。

  • 取值為0時表示不保留數據歷史狀態,也就是不支持timetravel查詢。

  • 如果數據歷史狀態存在時間超過了此參數設置的值,可被刪除或者Compact。

  • 如果SQL timetravel查詢的時間早于該參數的值,會直接報錯,比如屬性值為72小時,timetravel要查詢72小時之前的數據歷史狀態,會直接報錯。

acid.incremental.query.out.of.time.range.enabled

默認false

True表示增量查詢指定的endTimestamp可大于表最大的數據Commit Time,在endTimestamp大于當前時間場景下,用戶多次查詢可能得到不同的結果,因為可能有新的數據插入。支持修改表的此參數取值。

acid.write.precombine.field

可以指定一個列的名稱,且只能指定一個。

如果指定了列名,在同一提交的文件處理中,系統會結合主鍵(PK)列對數據進行去重處理,確保數據的唯一性和一致性。

說明

當一次性提交的數據量超過128 M時,會導致生成多個文件,該參數對多個文件不適用。

  • Delta Table其他通用參數的設置要求。

    • LIFECYCLE: 表生命周期必須大于等于Time Travel可查詢的生命周期,即lifecycle >= acid.data.retain.hours / 24。創建表時會做檢查,不符合會報錯。

    • 其他不支持的特性:不支持設置CLUSTER BY、EXTERNAL外表和CREATE TABLE AS。

  • 其他使用限制:

    • 當前不支持除MaxCompute SQL外的其他引擎直接操作Delta Table。

    • 存量普通表不支持修改為Delta Table。

    • 不支持對Delta Table主鍵表的PK列做表結構變更。

基于已有數據表建表參數

  • 通過CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] AS <select_statement>;語句可以再創建一個表,并在建表的同時將數據復制到新表中。

    • 但通過該語句創建的表不會復制分區屬性,只會把源表的分區列作為目標表的一般列處理,也不會復制源表的生命周期屬性。

    • 您還可以通過lifecycle參數回收表。同時也支持創建內部表復制外部表的數據。

  • 通過CREATE TABLE [IF NOT EXISTS] <table_name> [LIFECYCLE <days>] LIKE <existing_table_name>;語句可以再創建一個表,使目標表和源表具有相同的表結構。

    • 但通過該語句創建的表不復制數據,也不會復制源表的生命周期屬性。

    • 您還可以通過lifecycle參數回收表。同時也支持創建內部表復制外部表的結構。

使用示例

  • 創建非分區表。

    CREATE TABLE test1 (key STRING);
  • 創建分區表。

    CREATE TABLE IF NOT EXISTS sale_detail(
     shop_name     STRING,
     customer_id   STRING,
     total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING, region STRING);
  • 創建新表,替換原有表。

    1. 創建原有表mytable,并寫入數據。

      CREATE OR REPLACE TABLE my_table(a bigint);
      
      INSERT INTO my_table(a) VALUES (1),(2),(3);
    2. 使用OR REPLACE創建新的同名表,并修改字段。

      CREATE OR REPLACE TABLE my_table(b string);
    3. 查詢my_table表,返回結果如下。

      +------------+
      | b          | 
      +------------+
      +------------+

    以下為非法的SQL語句:

    CREATE OR REPLACE TABLE IF NOT EXISTS my_table(b STRING);
    CREATE OR REPLACE TABLE my_table AS SELECT;
    CREATE OR REPLACE TABLE my_table LIKE newtable;
  • 創建新表,將已有表數據復制到新表,并設置生命周期。

    -- 創建一個新表sale_detail_ctas1,將sale_detail的數據復制到sale_detail_ctas1中,并設置生命周期。
    SET odps.sql.allow.fullscan=true;
    CREATE TABLE sale_detail_ctas1 LIFECYCLE 10 AS SELECT * FROM sale_detail;

    您可以通過DESC EXTENDED sale_detail_ctas1;命令查看到表的結構及生命周期等詳細信息。

    說明

    此處sale_detail是一張分區表,而通過CREATE TABLE ... AS select_statement ...語句創建的表sale_detail_ctas1不會復制分區屬性,只會把源表的分區列作為目標表的一般列處理。即sale_detail_ctas1是一個含有5列的非分區表。

  • 創建新表,在SELECT語句中使用常量作為列的值。

    說明

    如果在SELECT子句中使用常量作為列的值,建議您指定列的名字。創建的表sale_detail_ctas3的第四、五列類似于_c4_c5

    • 指定列的名字。

      SET odps.sql.allow.fullscan=true;
      CREATE TABLE sale_detail_ctas2
      AS
      SELECT shop_name, customer_id, total_price, '2013' AS sale_date, 'China' AS region
      FROM sale_detail;
    • 不指定列的名字。

      SET odps.sql.allow.fullscan=true;
      
      CREATE TABLE sale_detail_ctas3
      AS
      SELECT shop_name, customer_id, total_price, '2013', 'China' 
      FROM sale_detail;
  • 創建新表,與已有表的結構相同,并設置生命周期。

    CREATE TABLE sale_detail_like LIKE sale_detail LIFECYCLE 10;

    您可以通過DESC EXTENDED sale_detail_like;命令查看到表的結構及生命周期等詳細信息。

    說明

    sale_detail_like的表結構與sale_detail完全相同。除生命周期屬性外,列名、列注釋以及表注釋等均相同。但sale_detail中的數據不會被復制到sale_detail_like表中。

  • 創建新表,與外部表具有相同的表結構。

    -- 創建一個新表mc_oss_extable_orc_like,與外部表mc_oss_extable_orc具有相同的表結構。
    CREATE TABLE mc_oss_extable_orc_like LIKE mc_oss_extable_orc;

    您可以通過DESC mc_oss_extable_orc_like;命令查看表結構等詳細信息。

    +------------------------------------------------------------------------------------+
    | Owner: ALIYUN$****@***.aliyunid.com | Project: max_compute_7u************yoq              |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2022-08-11 11:10:47                                      |
    | LastDDLTime:              2022-08-11 11:10:47                                      |
    | LastModifiedTime:         2022-08-11 11:10:47                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | id              | string     |       |                                             |
    | name            | string     |       |                                             |
    +------------------------------------------------------------------------------------+
  • 創建使用新數據類型的表。

    SET odps.sql.type.system.odps2=true;
    CREATE TABLE test_newtype (
        c1 TINYINT,
        c2 SMALLINT,
        c3 INT,
        c4 BIGINT,
        c5 FLOAT,
        c6 DOUBLE,
        c7 DECIMAL,
        c8 BINARY,
        c9 TIMESTAMP,
        c10 ARRAY<MAP<BIGINT,BIGINT>>,
        c11 MAP<STRING,ARRAY<BIGINT>>,
        c12 STRUCT<s1:STRING,s2:BIGINT>,
        c13 VARCHAR(20))
    LIFECYCLE 1;
  • 創建Hash聚簇非分區表。

    CREATE TABLE t1 (a STRING, b STRING, c BIGINT) CLUSTERED BY (c) SORTED BY (c) INTO 1024 buckets;
  • 創建Hash聚簇分區表。

    CREATE TABLE t2 (a STRING, b STRING, c BIGINT) 
    PARTITIONED BY (dt STRING) CLUSTERED BY (c) SORTED BY (c) into 1024 buckets;
  • 創建Range聚簇非分區表。

    CREATE TABLE t3 (a STRING, b STRING, c BIGINT) RANGE CLUSTERED BY (c) SORTED BY (c) INTO 1024 buckets;
  • 創建Range聚簇分區表。

    CREATE TABLE t4 (a STRING, b STRING, c BIGINT) 
    PARTITIONED BY (dt STRING) RANGE CLUSTERED BY (c) SORTED BY (c); 
  • 創建Transactional非分區表。

    CREATE TABLE t5(id bigint) tblproperties("transactional"="true");
  • 創建Transactional分區表。

    CREATE TABLE IF NOT EXISTS t6(id bigint) 
    PARTITIONED BY (ds string) tblproperties ("transactional"="true");
  • 創建非分區表,并為字段指定默認值。

    CREATE TABLE test_default( 
    tinyint_name tinyint NOT NULL default 1Y,
    smallint_name SMALLINT NOT NULL DEFAULT 1S,
    int_name INT NOT NULL DEFAULT 1,
    bigint_name BIGINT NOT NULL DEFAULT 1,
    binary_name BINARY ,
    float_name FLOAT ,
    double_name DOUBLE NOT NULL DEFAULT 0.1,
    decimal_name DECIMAL(2, 1) NOT NULL DEFAULT 0.0BD,
    varchar_name VARCHAR(10) ,
    char_name CHAR(2) ,
    string_name STRING NOT NULL DEFAULT 'N',
    boolean_name BOOLEAN NOT NULL DEFAULT TRUE
    );
  • 創建內部表復制外部分區表數據,內部表不包含分區屬性。

    1. 創建OSS外部表和MaxCompute內部表。

      -- 創建oss外部表并插入數據。
      CREATE EXTERNAL table max_oss_test(a int, b int, c int) 
      stored AS TEXTFILE
      location "oss://oss-cn-hangzhou-internal.aliyuncs.com/<bucket_name>";
      
      INSERT INTO max_oss_test VALUES 
      (101, 1, 20241108),
      (102, 2, 20241109),
      (103, 3, 20241110);
      
      SELECT * FROM max_oss_test;
      
      -- 結果
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
      
      
      -- 使用create table as創建內部表
      CREATE TABLE from_exetbl_oss AS SELECT * FROM max_oss_test;
      
      -- 查詢新建內部表
      SELECT * FROM from_exetbl_oss;
      
      -- 返回結果,全表數據都有
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
    2. 執行DESC from_exetbl_as_par;查詢內部表結構。返回結果如下。

      +------------------------------------------------------------------------------------+
      | Owner:                    ALIYUN$***********                                       |
      | Project:                  ***_*****_***                                            |
      | TableComment:                                                                      |
      +------------------------------------------------------------------------------------+
      | CreateTime:               2023-01-10 15:16:33                                      |
      | LastDDLTime:              2023-01-10 15:16:33                                      |
      | LastModifiedTime:         2023-01-10 15:16:33                                      |
      +------------------------------------------------------------------------------------+
      | InternalTable: YES      | Size: 919                                                |
      +------------------------------------------------------------------------------------+
      | Native Columns:                                                                    |
      +------------------------------------------------------------------------------------+
      | Field           | Type       | Label | Comment                                     |
      +------------------------------------------------------------------------------------+
      | a               | string     |       |                                             |
      | b               | string     |       |                                             |
      | c               | string     |       |                                             |
      +------------------------------------------------------------------------------------+
  • 創建內部表復制外部分區表數據,內部表包含分區屬性。

    1. 創建內部表from_exetbl_like

      -- MaxCompute側查詢湖倉一體外部表
      SELECT * FROM max_oss_test;
      -- 返回結果
      a    b    c
      101    1    20241108
      102    2    20241109
      103    3    20241110
      
      -- 使用create table like創建內部表
      CREATE TABLE from_exetbl_like LIKE max_oss_test;
      
      -- 查詢新建內部表
      SELECT * FROM from_exetbl_like;
      -- 返回結果,只有表結構出現
      a    b    c
    2. 執行DESC from_exetbl_like;查詢內部表結構。返回結果如下。

      +------------------------------------------------------------------------------------+
      | Owner:                    ALIYUN$************                                      |
      | Project:                  ***_*****_***                                            |
      | TableComment:                                                                      |
      +------------------------------------------------------------------------------------+
      | CreateTime:               2023-01-10 15:09:47                                      |
      | LastDDLTime:              2023-01-10 15:09:47                                      |
      | LastModifiedTime:         2023-01-10 15:09:47                                      |
      +------------------------------------------------------------------------------------+
      | InternalTable: YES      | Size: 0                                                  |
      +------------------------------------------------------------------------------------+
      | Native Columns:                                                                    |
      +------------------------------------------------------------------------------------+
      | Field           | Type       | Label | Comment                                     |
      +------------------------------------------------------------------------------------+
      | a               | string     |       |                                             |
      | b               | string     |       |                                             |
      +------------------------------------------------------------------------------------+
      | Partition Columns:                                                                 |
      +------------------------------------------------------------------------------------+
      | c               | string     |                                                     |
      +------------------------------------------------------------------------------------+
  • 創建Delta Table表。

    CREATE TABLE mf_tt (pk bigint NOT NULL PRIMARY KEY, val bigint) 
      tblproperties ("transactional"="true");
  • 創建Delta Table表,設置主要表屬性。

    CREATE TABLE mf_tt2 ( 
      pk bigint NOT NULL, 
      pk2 bigint NOT NULL, 
      val bigint, 
      val2 bigint, 
      PRIMARY KEY (pk, pk2)
    ) 
    tblproperties (
      "transactional"="true", 
      "write.bucket.num" = "64", 
      "acid.data.retain.hours"="120"
    ) lifecycle 7;

刪除表

刪除非分區表或分區表。

注意事項

  • 請謹慎操作,確認表可以刪除后,再執行刪除操作。如果誤刪了表,當項目開啟了備份恢復功能,且刪除操作未超過項目設置的備份數據保留天數時,則可以恢復表。更多備份恢復信息,請參見備份與恢復

  • 刪除表之后,MaxCompute項目的存儲量會降低。

命令格式

DROP TABLE [IF EXISTS] <table_name>; 

參數說明

參數

是否必填

說明

IF EXISTS

如果不指定IF EXISTS且表不存在,則返回異常。如果指定IF EXISTS,無論表是否存在,均返回成功。

table_name

待刪除的表名。

使用示例

--刪除表sale_detail。無論sale_detail表是否存在,均返回成功。
DROP TABLE IF EXISTS sale_detail; 

相關文檔

  • 復制表數據至另一張表中,詳情請參見CLONE TABLE

  • 修改和查看表信息,詳情請參見修改表

  • 對已有表分區執行操作,詳情請參見分區操作

  • 對已有表的列執行操作,詳情請參見列操作