Amazon Redshift
数据库开发人员指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

步骤 3:创建外部 schema 和外部表

外部表必须在外部 schema 中创建。外部 schema 引用了外部数据目录中的数据库并提供了 IAM 角色 ARN (代表您授权您的集群访问 Amazon S3)。您可在 Amazon Athena 数据目录、AWS Glue 数据目录 或 Apache Hive 元存储(如 Amazon EMR)中创建外部数据库。在本示例中,您将在创建外部 schema Amazon Redshift 时在 Amazon Athena 数据目录中创建外部数据库。有关更多信息,请参阅为 Amazon Redshift Spectrum 创建外部 schema

创建外部 schema 和外部表

  1. 要创建外部 schema,请将以下命令中的 IAM 角色 ARN 替换为您在步骤 1 中创建的角色 ARN,然后在 SQL 客户端中执行该命令。

    create external schema spectrum from data catalog database 'spectrumdb' iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole' create external database if not exists;
  2. 要创建外部表,请运行以下 CREATE EXTERNAL TABLE 命令。

    注意

    在此示例中,带示例数据的 Amazon S3 存储桶位于 us-west-2 区域中。您的集群和 Redshift Spectrum 文件必须位于同一 AWS 区域中,因此,在此示例中,您的集群也必须位于 us-west-2 区域中。

    要在其他 AWS 区域中使用此示例,您可以使用 Amazon S3 copy 命令复制销售数据,并更新示例 CREATE EXTERNAL TABLE 命令中的存储桶位置。

    aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --recursive
    create external table spectrum.sales( salesid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp) row format delimited fields terminated by '\t' stored as textfile location 's3://awssampledbuswest2/tickit/spectrum/sales/' table properties ('numRows'='172000');