从远程主机中加载数据
您可使用 COPY 命令从一个或多个远程主机并行加载数据,例如 Amazon EC2 实例或其他计算机。COPY 将连接到使用 SSH 的远程主机并在远程主机上运行命令以生成文本输出。
远程主机可以是 Amazon EC2 Linux 实例或配置为接受 SSH 连接的另一台 Unix 或 Linux 计算机。本指南假定您的远程主机是 Amazon EC2 实例。如果过程与其他计算机不同,指南中将会指出差别。
Amazon Redshift 可连接到多台主机,并可以打开到每台主机的多个 SSH 连接。Amazon Redshift 会通过每个连接发送一个唯一命令来生成到主机标准输出的文本输出,然后 Amazon Redshift 会像读取文本文件一样读取它。
开始前的准备工作
在开始之前,您应做好以下准备:
-
您可使用 SSH 连接的一个或多个主机(如 Amazon EC2 实例)。
-
主机上的数据来源。
您将提供一些命令,Amazon Redshift 集群将在主机上运行这些命令以生成文本输出。在集群连接到主机后,COPY 命令将运行这些命令,从主机的标准输出中读取文本,并将数据并行加载到 Amazon Redshift 表中。文本输出必须采用 COPY 命令可提取的形式。有关更多信息,请参阅准备输入数据。
-
从您的计算机访问主机的权限。
对于 Amazon EC2 实例,您将使用 SSH 连接来访问主机。您必须访问主机以将 Amazon Redshift 集群的公有密钥添加到主机的授权密钥文件。
-
正在运行的 Amazon Redshift 集群。
有关如何启动集群的信息,请参阅 Amazon Redshift 入门指南。
加载数据的过程
本节指导您完成从远程主机加载数据的过程。以下各节提供每个步骤中必须完成的操作的详细信息。
-
公有密钥使 Amazon Redshift 集群节点能够建立与远程主机的 SSH 连接。您将使用每个集群节点的 IP 地址来配置主机安全组或防火墙,从而允许使用这些 IP 地址从 Amazon Redshift 集群进行访问。
-
步骤 2:将 Amazon Redshift 集群公有密钥添加到主机的授权密钥文件
您将 Amazon Redshift 集群公有密钥添加到主机的授权密钥文件,以便让主机识别 Amazon Redshift 集群并接受 SSH 连接。
-
步骤 3:将主机配置为接受 Amazon Redshift 集群的所有 IP 地址
对于 Amazon EC2,修改该实例的安全组,以添加接受 Amazon Redshift IP 地址的输入规则。对于其他主机,请修改防火墙,以便 Amazon Redshift 节点能够建立与远程主机的 SSH 连接。
-
您可以选择指定 Amazon Redshift 应使用公有密钥来标识主机。您必须找到公有密钥并将文本复制到您的清单文件中。
-
清单是一个 JSON 格式的文本文件,其中包含 Amazon Redshift 连接到主机并提取数据所需的详细信息。
-
Amazon Redshift 将读取清单文件并使用该信息连接到远程主机。如果 Amazon S3 桶不在您的 Amazon Redshift 集群所在的区域内,则必须使用 REGION 选项指定数据所在的区域。
-
从 Amazon Redshift 数据库运行 COPY 命令,以便将数据加载到 Amazon Redshift 表中。