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语句。
- table_format
示例
创建ORC表:
1
|
CREATE TABLE test_table1 (a int, b bool, c text) store as orc; |