步驟 3:建立外部結構描述與外部資料表 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 3:建立外部結構描述與外部資料表

在外部結構描述中建立外部資料表。外部結構描述參考外部資料目錄中的資料庫,並提供 IAM 角色 ARN,以授權叢集代表您存取 Amazon S3。您可以在 Amazon Athena 資料目錄或 Apache Hive 中繼存放區 (例如亞馬遜 EMR) 中建立外部資料庫。AWS Glue Data Catalog對於此範例,您可以在建立外部結構描述 Amazon Redshift 時,在 Amazon 雅典娜資料目錄中建立外部資料庫。如需詳細資訊,請參閱為 Amazon Redshift Spectrum 創建外部架構

建立外部結構描述與外部資料表
  1. 如要建立外部結構描述,請將以下命令中的 IAM 角色 ARN 替換為您在步驟 1 中建立的角色 ARN。然後,在您的 SQL 用戶端中執行命令。

    create external schema myspectrum_schema from data catalog database 'myspectrum_db' iam_role 'arn:aws:iam::123456789012:role/myspectrum_role' create external database if not exists;
  2. 若要建立外部資料表,請執行以下 CREATE EXTERNAL TABLE 命令。

    注意

    叢集與 Amazon S3 儲存貯體必須在相同的叢集AWS 區域。在此範例中建立外部資料表命令,包含範例資料的 Amazon S3 儲存貯體位於 US East (N. Virginia) AWS 區域。若要查看來源資料,請下載sales_ts.000檔案。。

    您可以修改此範例,以便在其他範例中執行AWS 區域。在您想要的中建立 Amazon S3 儲存貯體AWS 區域。使用 Amazon S3 複製命令複製銷售資料。然後將範例CREATE EXTERNAL TABLE指令中的位置選項更新至您的值區。

    aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --copy-props none --recursive

    Amazon S3 複製命令的輸出會確認檔案已複製到所需的儲存貯體名稱。AWS 區域

    copy: s3://redshift-downloads/tickit/spectrum/sales/sales_ts.000 to s3://bucket-name/tickit/spectrum/sales/sales_ts.000
    create external table myspectrum_schema.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://redshift-downloads/tickit/spectrum/sales/' table properties ('numRows'='172000');