DML
DML
DML 是“Data Manipulation Language”(数据操作语言)的缩写,涉及向表中插入数据以及修改表中的数据。
COPY
将表或查询的结果复制到文件中。支持的文件格式有 parquet、csv、json 和 arrow。
COPY { table_name | query }
TO 'file_name'
[ STORED AS format ]
[ PARTITIONED BY column_name [, ...] ]
[ OPTIONS( option [, ... ] ) ]STORED AS 指定 COPY 命令写入的文件格式。如果未指定该子句,则会尽可能根据文件扩展名推断格式。
PARTITIONED BY 指定用于将输出文件分区到不同的 Hive 风格目录中的列。默认情况下,PARTITIONED BY 中使用的列会从输出中移除。如果希望保留这些列,应设置选项 execution.keep_partition_by_columns true。execution.keep_partition_by_columns 标志也可以通过 SessionConfig 中的 ExecutionOptions 来启用。
输出格式由以下规则按顺序匹配确定:
STORED AS的值- 文件名扩展名(例如
foo.parquet表示PARQUET格式)
有关有效 OPTIONS 的详细列表,请参阅格式选项。
示例
将 source_table 的内容以 JSON 格式复制到 file_name.json:
> COPY source_table TO 'file_name.json';
+-------+
| count |
+-------+
| 2 |
+-------+将 source_table 的内容复制到 dir_name 目录下的一个或多个 Parquet 格式文件中:
> COPY source_table TO 'dir_name' STORED AS PARQUET;
+-------+
| count |
+-------+
| 2 |
+-------+将 source_table 的内容复制为多个目录下的 hive 风格分区 Parquet 文件:
> COPY source_table TO 'dir_name' STORED AS parquet, PARTITIONED BY (column1, column2);
+-------+
| count |
+-------+
| 2 |
+-------+如果数据在 column1 中包含 x 和 y 两个值,而在 column2 中只包含 a,则输出文件将呈现如下目录结构:
dir_name/
column1=x/
column2=a/
<file>.parquet
<file>.parquet
...
column1=y/
column2=a/
<file>.parquet
<file>.parquet
...运行查询 SELECT * from source ORDER BY time,并将结果(保持原有顺序)写入名为 output.parquet 的 parquet 文件,其中 parquet 行组大小最大为 10MB:
> COPY (SELECT * from source ORDER BY time) TO 'output.parquet' OPTIONS (MAX_ROW_GROUP_SIZE 10000000);
+-------+
| count |
+-------+
| 2 |
+-------+INSERT
示例
向表中插入值。
INSERT INTO table_name { VALUES ( expression [, ...] ) [, ...] | query }> INSERT INTO target_table VALUES (1, 'Foo'), (2, 'Bar');
+-------+
| count |
+-------+
| 2 |
+-------+评论
登录后参与评论
KnowForge