推荐答案
在 Presto 中,CREATE TABLE 语句用于创建一个新表。以下是使用 CREATE TABLE 语句的基本语法:
CREATE TABLE [IF NOT EXISTS] table_name (
column_name data_type [COMMENT 'column_comment'],
...
)
[COMMENT 'table_comment']
[WITH (property_name = property_value, ...)]示例
CREATE TABLE IF NOT EXISTS my_table (
id BIGINT,
name VARCHAR,
age INT COMMENT 'Age of the person',
created_at TIMESTAMP
)
COMMENT 'This is a sample table'
WITH (format = 'ORC', partitioned_by = ARRAY['created_at']);本题详细解读
1. CREATE TABLE 语句的基本结构
CREATE TABLE: 这是创建表的关键字。IF NOT EXISTS: 这是一个可选的关键字,用于在表已经存在时避免重复创建。table_name: 这是要创建的表的名称。column_name: 这是表中列的名称。data_type: 这是列的数据类型,例如BIGINT、VARCHAR、INT、TIMESTAMP等。COMMENT: 这是一个可选的注释,用于描述列或表。
2. WITH 子句
WITH 子句用于指定表的存储格式和其他属性。常见的属性包括:
format: 指定表的存储格式,例如ORC、PARQUET、TEXTFILE等。partitioned_by: 指定表的分区列,通常是一个数组,例如ARRAY['created_at']。
3. 示例解析
在示例中,我们创建了一个名为 my_table 的表,包含以下列:
id: 数据类型为BIGINT。name: 数据类型为VARCHAR。age: 数据类型为INT,并附带了一个注释'Age of the person'。created_at: 数据类型为TIMESTAMP。
表本身也有一个注释 'This is a sample table',并且使用了 ORC 格式存储,按 created_at 列进行分区。
4. 注意事项
- 在 Presto 中,
CREATE TABLE语句通常用于创建外部表,即表的数据存储在外部存储系统(如 HDFS、S3)中。 - Presto 本身不管理数据存储,因此
CREATE TABLE语句通常与外部存储系统(如 Hive)结合使用。 - 如果表已经存在且使用了
IF NOT EXISTS子句,Presto 不会抛出错误,而是静默跳过创建操作。