步骤 4:将数据从 Amazon S3 加载到 Amazon Redshift - Amazon Redshift

步骤 4:将数据从 Amazon S3 加载到 Amazon Redshift

创建集群后,您可以将数据从 Amazon S3 加载到数据库表。您可以通过多种方法从 Amazon S3 加载数据。

  • 您可以使用 SQL 客户端运行 SQL CREATE TABLE 命令在数据库中创建表,然后使用 SQL COPY 命令从 Amazon S3 加载数据。Amazon Redshift 查询编辑器 v2 是一个 SQL 客户端。

  • 您可以使用 Amazon Redshift 查询编辑器 v2 加载向导。

本教程首先演示如何使用 Amazon Redshift 查询编辑器 v2 运行 SQL 命令来创建表和复制数据。从 Amazon Redshift 控制台导航窗格启动查询编辑器 v2。在查询编辑器 v2 中,使用管理员用户 awsuser,创建与 examplecluster 集群和名为 dev 的数据库的连接。对于本教程,在创建连接时,请选择使用数据库用户名的临时凭证。有关使用 Amazon Redshift 查询编辑器 v2 的详细信息,请参阅《Amazon Redshift 管理指南》中的连接到 Amazon Redshift 数据库

使用 SQL 命令从 Amazon S3 加载数据

在查询编辑器 v2 查询编辑器窗格上,确认您已连接到 examplecluster 集群和 dev 数据库。接下来,在数据库中创建一些表,然后将数据上传到表中。对于本教程,您加载的数据存储在一个可从多个 AWS 区域访问的 Amazon S3 存储桶中。

以下过程将会创建表并从公共 Amazon S3 存储桶加载数据。

使用 Amazon Redshift 查询编辑器 v2 复制并运行以下 create table 语句,以在 dev 数据库的 public 架构中创建表。有关语法的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 CREATE TABLE

使用 SQL 客户端(例如查询编辑器 v2)创建和加载数据
  1. 输入以下 SQL 命令以 CREATE sales 表。

    drop table if exists sales; create table sales( salesid integer not null, listid integer not null distkey, sellerid integer not null, buyerid integer not null, eventid integer not null, dateid smallint not null sortkey, qtysold smallint not null, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp);
  2. 输入以下 SQL 命令以 CREATE date 表。

    drop table if exists date; create table date( dateid smallint not null distkey sortkey, caldate date not null, day character(3) not null, week smallint not null, month character(5) not null, qtr character(5) not null, year smallint not null, holiday boolean default('N'));
  3. 使用 COPY 命令从 Amazon S3 中加载 sales

    注意

    我们建议使用 COPY 命令将大型数据集从 Amazon S3 加载到 Amazon Redshift 中。有关 COPY 语法的更多信息,请参阅《Amazon Redshift 数据库开发人员指南中的 COPY

    要加载示例数据,为您的集群提供代表您访问 Amazon S3 的身份验证。如果您在创建集群时选择了创建 IAM 角色作为默认角色,就可以通过引用所创建并设置为集群 default 的 IAM 角色来提供身份验证。

    使用以下 SQL 命令加载 sales 表。您可以选择从 Amazon S3 存储桶下载并查看 sales 表的源数据。。

    COPY sales FROM 's3://redshift-downloads/tickit/sales_tab.txt' DELIMITER '\t' TIMEFORMAT 'MM/DD/YYYY HH:MI:SS' REGION 'us-east-1' IAM_ROLE default;
  4. 使用以下 SQL 命令加载 date 表。您可以选择从 Amazon S3 存储桶下载并查看 date 表的源数据。。

    COPY date FROM 's3://redshift-downloads/tickit/date2008_pipe.txt' DELIMITER '|' REGION 'us-east-1' IAM_ROLE default;

使用查询编辑器 v2 从 Amazon S3 加载数据

使用加载数据向导时,查询编辑器 v2 可简化数据的加载。在查询编辑器 v2 加载数据向导中生成和使用的 COPY 命令,支持从 Amazon S3 加载数据的 COPY 命令语法可使用的多个参数。有关 COPY 命令及其用于从 Amazon S3 中复制加载的选项的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 Amazon Simple Storage Service 中的 COPY 命令

要将您自己的数据从 Amazon S3 加载到 Amazon Redshift,Amazon Redshift 需要一个 IAM 角色,该角色具有从指定的 Amazon S3 桶加载数据所需的权限。

对于本教程,首先打开 Amazon Redshift 查询编辑器 v2 并连接到数据库。接下来,创建包含已加载数据的表。然后,将您自己的数据从 Amazon S3 加载到 Amazon Redshift。有关使用查询编辑器 v2 的更多信息,请参阅《Amazon Redshift 管理指南》中的将数据加载到数据库

在集群中创建 TICKIT 数据

您可以通过以下方式创建一组完整的 TICKIT 表,并将数据加载到集群中:

  • 在 Amazon Redshift 控制台中创建集群时,您可以选择同时加载示例 TICKIT 数据。在 Amazon Redshift 控制台上,依次选择集群创建集群。在示例数据部分,选择加载示例数据,在集群创建过程中,Amazon Redshift 自动将其示例数据集加载到您的 Amazon Redshift 集群 dev 数据库。

  • 使用 Amazon Redshift 查询编辑器 v2,您可以将 TICKIT 数据加载到名为 sample_data_dev 的示例数据库。导航到 sample_data_dev 数据库,然后导航到 tickit,从上下文菜单中选择打开示例笔记本。Amazon Redshift 查询编辑器 v2 创建示例数据库以及名为 tickit-sample-notebook 的示例笔记本。您可以运行此笔记本来查询示例数据库中的数据。

要查看有关 TICKIT 数据的详细信息,请参阅《Amazon Redshift 数据库开发人员指南》中的示例数据库