有关使用此命令的信息,请参阅创建 S3 事件集成以自动从 Amazon S3 存储桶复制文件。
管理将数据加载到表中的 COPY 命令。COPY JOB 命令是 COPY 命令的扩展,可自动从 Amazon S3 桶加载数据。当您创建 COPY 作业时,Amazon Redshift 会检测何时在指定路径中创建新的 Amazon S3 文件,然后自动加载这些文件,无需您的干预。加载数据时使用的参数与原始 COPY 命令中使用的参数相同。Amazon Redshift 保持跟踪加载的文件(基于文件名),以确认它们只加载一次。
注意
有关 COPY 命令的信息,包括用法、参数和权限,请参阅 COPY。
所需的权限
要运行 COPY JOB 的 COPY 命令,必须对要加载的表具有 INSERT 权限。
使用 COPY 命令指定的 IAM 角色必须具有访问待加载数据的权限。有关更多信息,请参阅 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 权限。
语法
创建复制作业。COPY 命令的参数与复制作业一起保存。
您不能在事务块的范围内运行 COPY JOB CREATE。
COPY copy-command JOB CREATE job-name [AUTO ON | OFF]
更改复制作业的配置。
COPY JOB ALTER job-name [AUTO ON | OFF]
运行复制作业。使用存储的 COPY 命令参数。
COPY JOB RUN job-name
列出所有复制作业。
COPY JOB LIST
显示复制作业的详细信息。
COPY JOB SHOW job-name
删除复制作业。
您不能在事务区的范围内运行 COPY JOB DROP。
COPY JOB DROP job-name
参数
- copy-command
-
COPY 命令将数据从 Amazon S3 加载到 Amazon Redshift。该子句包含用于定义 Amazon S3 桶、目标表、IAM 角色的 COPY 参数,以及加载数据时使用的其他参数。支持用于 Amazon S3 数据加载的所有 COPY 命令参数,但以下参数除外:
-
COPY JOB 不会摄取 COPY 命令指向的文件夹中已有的文件。只有在 COPY JOB 创建时间戳之后创建的文件才会被摄取。
不能使用 MAXERROR 或 IGNOREALLERRORS 选项指定 COPY 命令。
不能指定清单文件。COPY JOB 需要指定的 Amazon S3 位置来监控新创建的文件。
不能使用访问密钥和私有密钥等授权类型指定 COPY 命令。仅支持使用
IAM_ROLE
参数进行授权的 COPY 命令。有关更多信息,请参阅 授权参数。COPY JOB 不支持与集群关联的默认 IAM 角色。必须在 COPY 命令中指定
IAM_ROLE
。
有关更多信息,请参阅 从 Amazon S3 执行 COPY 操作。
-
- job-name
-
用于引用 COPY JOB 的作业的名称。job-name 不能包含连字符(‐)。
- [AUTO ON | OFF]
-
该子句指示 Amazon S3 数据是否自动加载到 Amazon Redshift 表中。
选项为
ON
时,Amazon Redshift 会监控源 Amazon S3 路径中新创建的文件,如果找到新创建的文件,则使用作业定义中的 COPY 参数运行 COPY 命令。这是默认值。选项为
OFF
时,Amazon Redshift 不会自动运行 COPY JOB。
使用说明
COPY 命令的选项要等到运行时才会验证。例如,在 COPY JOB 启动时,无效的 IAM_ROLE
或 Amazon S3 数据来源会导致出现运行时错误。
如果暂停集群,则不运行 COPY JOB。
要查询已加载的 COPY 命令文件和加载错误,请参见 STL_LOAD_COMMITS、STL_LOAD_ERRORS 和 STL_LOADERROR_DETAIL。有关更多信息,请参阅 验证是否正确加载了数据。
示例
以下示例显示创建 COPY JOB 以从 Amazon S3 桶加载数据。
COPY public.target_table
FROM 's3://amzn-s3-demo-bucket/staging-folder'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName'
JOB CREATE my_copy_job_name
AUTO ON;