CREATE TABLE

摘要

  1. CREATE TABLE [ IF NOT EXISTS ]
  2. table_name (
  3. { column_name data_type [ COMMENT comment ] [ WITH ( property_name = expression [, ...] ) ]
  4. | LIKE existing_table_name [ { INCLUDING | EXCLUDING } PROPERTIES ] }
  5. [, ...]
  6. )
  7. [ COMMENT table_comment ]
  8. [ WITH ( property_name = expression [, ...] ) ]

说明

创建一个具有指定列的空表。使用 create-table-as 可以创建含数据的表。

如果使用可选的 IF NOT EXISTS 子句,则在表已存在时禁止显示错误。

可以使用可选的 WITH 子句来设置创建的表或单个列的属性。要列出所有可用的表属性,请运行以下查询:

  1. SELECT * FROM system.metadata.table_properties

例如,对于 Hive 连接器,以下是一些可用且常用的表属性:

属性名称数据类型说明默认值
formatvarchar表的 Hive 存储格式。可能的值为:ORC、PARQUET、AVRO、RCBINARY、RCTEXT、SEQUENCEFILE、JSON、TEXTFILE 和 CSV。ORC
bucket_countinteger桶的数量。
bucketed_byarray(varchar)分桶列。
sorted_byarray(varchar)桶排序列。
externalboolean表是否为外部表。false
locationvarchar表的文件系统位置 URI。如果 external=true,则必须提供位置值。
partitioned_byarray(varchar)分区列。
transactionalboolean是否启用事务属性。存在一个限制,即仅 ORC 存储格式支持创建事务表。false

要列出所有可用的列属性,请运行以下查询:

  1. SELECT * FROM system.metadata.column_properties

可以使用 LIKE 子句在新表中包含现有表中的所有列定义。可以指定多个 LIKE 子句,从而允许复制多个表中的列。

如果指定了 INCLUDING PROPERTIES,则将所有表属性复制到新表中。如果 WITH 子句指定的属性名称与某个复制的属性的名称相同,则使用 WITH 子句中的值。默认行为是 EXCLUDING PROPERTIES。最多只能为一个表指定 INCLUDING PROPERTIES 选项。

示例

创建表 orders

  1. CREATE TABLE orders (
  2. orderkey bigint,
  3. orderstatus varchar,
  4. totalprice double,
  5. orderdate date
  6. )
  7. WITH (format = 'ORC')

创建事务表 orders

  1. CREATE TABLE orders (
  2. orderkey bigint,
  3. orderstatus varchar,
  4. totalprice double,
  5. orderdate date
  6. )
  7. WITH (format = 'ORC',
  8. transactional=true)

创建外部表 orders

  1. CREATE TABLE orders (
  2. orderkey bigint,
  3. orderstatus varchar,
  4. totalprice double,
  5. orderdate date
  6. )
  7. WITH (format = 'ORC',
  8. external=true,
  9. location='hdfs://hdcluster/tmp/externaltbl')

如果表 orders 不存在,则创建该表,同时添加表注释和列注释:

  1. CREATE TABLE IF NOT EXISTS orders (
  2. orderkey bigint,
  3. orderstatus varchar,
  4. totalprice double COMMENT 'Price in cents.',
  5. orderdate date
  6. )
  7. COMMENT 'A table to keep track of orders.'

使用 orders 中的列并在开头和结尾使用附加的列创建表 bigger_orders

  1. CREATE TABLE bigger_orders (
  2. another_orderkey bigint,
  3. LIKE orders,
  4. another_orderdate date
  5. )

限制

不同的连接器可能支持不同的数据类型和不同的表/列属性。有关更多详细信息,请参见连接器文档。

另请参见

ALTER TABLEDROP TABLECREATE TABLE ASSHOW CREATE TABLE