Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 5:创建清单文件

COPY 命令可连接到使用 SSH 的多台主机,并可以与每台主机建立多个 SSH 连接。COPY 通过每个主机连接执行一个命令,然后将来自这些命令的输出并行加载到表中。清单文件是 Amazon Redshift 用于连接主机的文本文件,采用 JSON 格式。清单文件指定 SSH 主机终端节点以及将在主机上执行的用于将数据返回到 Amazon Redshift 的命令。另外,您还可以包含主机公有密钥、登录用户名和每个条目的 mandatory 标志。

清单文件应采用以下格式:

Copy
{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, “publickey”: “<public_key>”, "username": “<host_user_name>”}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, “publickey”: “<public_key>”, "username": “host_user_name”} ] }

该清单文件为每个 SSH 连接包含一个 "entries" 结构。每个条目表示一个 SSH 连接。您可以与单台主机建立多个连接或与多台主机建立多个连接。如上所示,字段名称和值均需要使用双引号。唯一一个不需要双引号的值是 mandatory 字段的布尔值 truefalse

下表介绍了清单文件中的字段。

endpoint

主机的 URL 地址或 IP 地址。例如,“ec2-111-222-333.compute-1.amazonaws.com”或“22.33.44.56”。

command

将由主机执行的命令,用于生成文本或二进制(gzip、lzop 或 bzip2)输出。该命令可以是用户 "host_user_name" 有权运行的任何命令。命令可以是像打印文件这样简单的命令,也可以查询数据库或启动脚本。输出(文本文件、gzip 二进制文件、lzop 二进制文件或 bzip2 二进制文件)必须采用 Amazon Redshift COPY 命令可提取的形式。有关更多信息,请参阅 准备您的输入数据

publickey

(可选)主机的公有密钥。如果提供了公有密钥,Amazon Redshift 将使用它来标识主机。如果未提供公有密钥,Amazon Redshift 将不会尝试主机标识。例如,如果远程主机的公有密钥是 ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com,请在 publickey 字段中输入以下文本:AbcCbaxxx…xxxDHKJ

mandatory

(可选)指示在连接失败的情况下 COPY 命令是否应失败。默认为 false。如果 Amazon Redshift 未成功建立至少一个连接,COPY 命令将失败。

username

(可选)将用于登录到主机系统并执行远程命令的用户名。用户登录名必须与步骤 2 中用于将公有密钥添加到主机的授权密钥文件的登录名相同。默认用户名为“redshift”。

以下示例显示了用于与同一主机建立四个连接并通过每个连接执行不同的命令的完整清单:

Copy
{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }