COPY

COPY TO

COPY TO 被用来将表的内容导出到文件中,其语法如下:

sql

  1. COPY tbl TO '/xxx/xxx/output.parquet' WITH (FORMAT = 'parquet');

命令以 COPY 关键字开始,后面跟着要导出数据的表名(本例中为 tbl)。 TO 指定导出数据的文件路径和名称(本例中为 /xxx/xxx/output.parquet)。

WITH 可以添加一些选项,比如文件的 FORMAT 用来指定导出文件的格式。本例中的格式为 Parquet,它是一种用于大数据处理的列式存储格式。Parquet 为大数据分析高效地压缩和编码列式数据。

COPY FROM

COPY FROM 被用来将文件中的数据导入到表中,其语法如下:

sql

  1. COPY [<db>.]<table_name>
  2. FROM { '<path>/[<filename>]' }
  3. [ [ WITH ]
  4. (
  5. [ FORMAT = { parquet } ]
  6. [ PATTERN = '<regex_pattern>' ]
  7. )
  8. ]

命令以 COPY 关键字开始,后面跟着要导入数据的表名。

FORMAT 指定导入文件的格式,本例中为 Parquet。

选项 PATTERN 允许使用通配符(如 *)指定匹配某种模式的多个输入文件。例如,你可以使用以下语法导入目录(必须是绝对路径)”/path/to/folder” 中文件名包含 parquet 的所有文件:

sql

  1. COPY tbl FROM '/path/to/folder/' WITH (FORMAT = 'parquet', PATTERN = '.*parquet.*');

例如,如果你只有一个文件需要导入,可以使用下方的语法:

sql

  1. COPY tbl FROM '/path/to/folder/xxx.parquet' WITH (FORMAT = 'parquet');

WITH 选项

选项描述是否必需
FORMAT目标文件格式,例如 JSON, CSV, Parquet
PATTERN使用正则匹配文件,例如 *_today.parquet可选

Connection 选项

S3

当你从 S3 导入数据时可以使用下方语法:

sql

  1. COPY tbl FROM '<url>' WITH (FORMAT = 'parquet') CONNECTION(BUCKET = 'us-west-2');.
URL

注意:你应该使用 S3://bucket/key-name 指定文件。下方的例子展示了正确的格式:

  1. S3://my-bucket/data.parquet

另一种方式是使用 Virtual-hosted–style,例如:

  1. https://bucket-name.s3.region-code.amazonaws.com/key-name
CONNECTION

你可以设置这些 CONNECTION 选项:

选项描述是否必需
REGIONAWS region 名称,例如 us-east-1.
ENDPOINTThe bucket endpoint可选
ACCESS_KEY_ID用于连接 AWS S3 兼容的对象存储的访问密钥 ID可选
SECRET_ACCESS_KEY用于连接 AWS S3 兼容的对象存储的秘密访问密钥可选
ENABLE_VIRTUAL_HOST_STYLE如果你使用 virtual hosting 的方式来定位 bucket,将该选项设置为 “true”可选
SESSION_TOKEN用于连接 AWS S3 服务的临时凭证。可选