COPY
COPY TABLE
COPY TO
COPY TO
被用来将表的内容导出到文件中,其语法如下:
COPY tbl TO '/xxx/xxx/output.parquet' WITH (FORMAT = 'parquet');
命令以 COPY
关键字开始,后面跟着要导出数据的表名(本例中为 tbl
)。
TO
指定导出数据的文件路径和名称(本例中为 /xxx/xxx/output.parquet
)。
WITH
选项
WITH
可以添加一些选项,比如文件的 FORMAT
用来指定导出文件的格式。本例中的格式为 Parquet,它是一种用于大数据处理的列式存储格式。Parquet 为大数据分析高效地压缩和编码列式数据。
选项 | 描述 | 是否必需 |
---|---|---|
FORMAT | 目标文件格式,例如 JSON, CSV, Parquet | 是 |
START_TIME /END_TIME | 需要导出数据的时间范围,时间范围为左闭右开 | 可选 |
CONNECTION
选项
COPY TO
支持导出数据到云存储上,比如 S3。详情请参考 连接 S3。
COPY FROM
COPY FROM
被用来将文件中的数据导入到表中,其语法如下:
COPY [<db>.]<table_name>
FROM { '<path>/[<filename>]' }
[ [ WITH ]
(
[ FORMAT = { parquet } ]
[ PATTERN = '<regex_pattern>' ]
)
]
命令以 COPY
关键字开始,后面跟着要导入数据的表名。
WITH
选项
FORMAT
指定导入文件的格式,本例中为 Parquet。
选项 PATTERN
允许使用通配符(如 *)指定匹配某种模式的多个输入文件。例如,你可以使用以下语法导入目录(必须是绝对路径)"/path/to/folder" 中文件名包含 parquet
的所有文件:
COPY tbl FROM '/path/to/folder/' WITH (FORMAT = 'parquet', PATTERN = '.*parquet.*');
例如,如果你只有一个文件需要导入,可以使用下方的语法:
COPY tbl FROM '/path/to/folder/xxx.parquet' WITH (FORMAT = 'parquet');
选项 | 描述 | 是否必需 |
---|---|---|
FORMAT | 目标文件格式,例如 JSON, CSV, Parquet | 是 |
PATTERN | 使用正则匹配文件,例如 *_today.parquet | 可选 |
Connection 选项
COPY FROM
同样支持从云存储上导入数据,比如 S3。详情请参考 连接 S3。
连接 S3
你可以从 S3 导入/导出数据
-- COPY FROM
COPY tbl FROM '<URL>' WITH (FORMAT = 'parquet') CONNECTION(REGION = 'us-west-2');
-- COPY TO
COPY tbl TO '<URL>' WITH (FORMAT = 'parquet') CONNECTION(REGION = 'us-west-2');
URL
注意:你应该使用 S3://bucket/key-name
指定文件。下方的例子展示了正确的格式:
S3://my-bucket/data.parquet
另一种方式是使用 Virtual-hosted–style(ENABLE_VIRTUAL_HOST_STYLE
需要设置成 true
),例如:
https://bucket-name.s3.region-code.amazonaws.com/key-name
NOTE
可以在 S3 控制台上点击 Copy S3 URI
或者 COPY URL
直接获取对应的 URL/HTTP 前缀或者完整路径。
选项
你可以设置这些 CONNECTION 选项:
选项 | 描述 | 是否必需 |
---|---|---|
REGION | AWS region 名称,例如 us-west-2 |