更新时间:2025-08-25 GMT+08:00

CREATE TABLE

功能描述

CREATE TABLE为DataArtsFabric SQL服务下特有语法,该语法功能是在LakeFormation上创建指定名称的表。

注意事项

  • PARTITIONED BY中出现的列不能出现在表的普通列描述中,分区列始终排在普通列的后面。
  • CLUSTERED BY语法仅适用于ORC、PARQUET表,不适用于Iceberg表。

语法格式

1
2
3
4
5
6
7
8
9
CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] [schema_name.]table_name 
[ ( col_name col_type [ COMMENT col_comment ] [, ... ] ) ]
[ COMMENT table_comment ]
[ PARTITION BY ( col_name col_type COMMENT col_comment [, ... ] ) ]
[ CLUSTERED BY (col_name [,...]) INTO ( bucket_num ) BUCKETS ]
[ TABLEPROPERTIES ( option_key = option_value [, ... ] ) ]
[ STORE AS table_format ]
[ LOCATION table_path ]
AS select_stmt;

参数说明

  • EXTERNAL

    如果指定该关键字,则创建EXTERNAL表;如果无该关键字,则默认创建MANAGED表,文件,元数据和统计信息都由DataArtsFabric SQL管理。

  • IF NOT EXISTS

    如果存在同名表,则发出一个notice而不是抛出一个错误。

  • schema_name

    表所属的数据库名,如果未指定数据库名时,则将在current_schema下建表。

  • table_name

    创建表的表名,表名长度不可超过63个字符。

  • col_name

    创建表的列名,列名长度不可超过63个字符。普通列和分区列的数量总和不可超过5000个。

  • col_type

    创建表的列类型,列类型支持范围如下:

    列类型

    是否可以声明为分区列

    是否支持ORC格式

    是否支持PARQUET格式

    是否支持Iceberg格式

    SmallInt

    Int

    BigInt

    Float

    ×

    Double

    ×

    Decimal

    Numeric

    Timestamp

    Date

    Varchar

    Char

    Bool

    ×

    Bytea

    ×

    Text

  • col_comment

    列注释信息,可指定为任意字符串。

  • table_comment

    表注释信息,可指定为任意字符串。

  • bucket_num

    bucket个数。

  • option_key = option_value

    表级别参数设置,支持参数范围如下:

    表1 option_key参数支持范围

    option_key

    option_value

    说明

    适用范围

    orc.compress

    zlib, snappy, lz4

    ORC文件压缩方式。

    ORC

    parquet.compression

    zlib, snappy, lz4

    PARQUET文件压缩方式。

    PARQUET

    julian_adjust

    true, false

    是否转换为Julian日期。

    PARQUET

    checkencoding

    high, low, no

    是否检查字符编码。

    ORC、PARQUET

    column_index_access

    true, false

    读取时表定义列和文件列匹配方式,默认true为列索引匹配,false为列名匹配。

    ORC、PARQUET

    filesize

    1~1024的证书

    生成外表文件大小。

    ORC、PARQUET

    write.delete.mode

    copy-on-write, merge-on-read

    设置delete时的模式:cow或mor。

    Iceberg

    write.update.mode

    copy-on-write, merge-on-read

    设置update时的模式:cow或mor。

    write.merge.mode

    copy-on-write, merge-on-read

    设置merge时的模式:cow或mor。

    write.parquet.compression-codec

    zstd, lz4, snappy, gzip,uncompressed

    parquet文件的压缩方式。

    write.merge.isolation-level

    snapshot, serializable

    merge命令的隔离级别。

    write.metadata.delete-after-commit.enabled

    true, false

    控制提交后是否删除最旧的跟踪版本元数据文件。

    write.update.isolation-level

    snapshot, serializable

    update命令的隔离级别。

    write.delete.isolation-level

    snapshot, serializable

    delete命令的隔离级别。

    write.metadata.previous-versions-max

    大于0的整数

    要保留的旧元数据文件的数量

    • table_format

      表存储格式,支持ORC、PARQUET、ICEBERG三种存储格式。

    • table_path

      表存储路径,必须为合法OBS路径,支持OBS对象桶和并行文件系统。如果该路径为OBS对象桶路径,则该表只读,否则该表支持读写。如果创建表类型为托管表(Managed Table),则不允许指定表存储路径,表存储路径由系统指定为Schema路径下与表名同名路径,且要求该路径在建表时为空。

    • select_stmt

      查询语句。外部表(External Table)不支持CTAS语句。

示例

创建ORC表:

1
CREATE TABLE test_table1 (a int, b bool, c text) store as orc;