将数据加载到数据库 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将数据加载到数据库

您可以使用查询编辑器 v2 将数据加载到 Amazon Redshift 集群或工作组的数据库中。

加载示例数据

查询编辑器 v2 附带可加载到示例数据库和相应 Schema 中的示例数据和笔记本。

要加载示例数据,请选择与要加载的示例数据相关联的 
            External 图标。然后,查询编辑器 v2 将数据加载到数据库 sample_data_dev 的 Schema 中,并在您的 Notebooks(笔记本)文件夹中创建一个存放所保存笔记本的文件夹。

提供了以下示例数据集。

tickit

Amazon Redshift 文档中的大多数示例使用称为 tickit 的示例数据。此数据包含七个表:两个事实表和五个维度。当您加载这些数据时,将使用示例数据更新模式 tickit。有关 tickit 数据的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的示例数据库

tpch

此数据用于决策支持基准。当您加载这些数据时,将使用示例数据更新模式 tpch。有关 tpch 数据类型的更多信息,请参阅 TPC-H

tpcds

此数据用于决策支持基准。当您加载这些数据时,将使用示例数据更新模式 tpcds。有关 tpcds 数据的更多信息,请参阅 TPC-DS

从 Simple Storage Service(Amazon S3)加载数据

您可将 Amazon S3 数据加载到现有表或新表中。

将数据加载到现有表中

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

  1. 确认表已在要加载数据的数据库中创建。

  2. 在继续之前,请在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单(右键单击)创建与将要加载数据的集群或工作组的连接。

    选择 
                        LoadLoad data(加载数据)

  3. 对于数据来源,选择从 S3 存储桶加载

  4. S3 URI中,选择 Browse S3(浏览 S3)以查找包含要加载数据的 Simple Storage Service(Amazon S3)桶。

  5. 如果指定的 Amazon S3 桶与目标表不在同一个 Amazon Web Services 区域中,则针对数据所在的 Amazon Web Services 区域选择 S3 file location(S3 文件位置)。

  6. 如果 Simple Storage Service(Amazon S3)文件实际上包含多个 Simple Storage Service(Amazon S3)桶 URI 清单,选择This file is a manifest file(此文件是清单文件)。

  7. 为要上载的文件选择 File format(文件格式)。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式,您可以选择相应的 File options(文件选项)。如果数据已加密,您还可以选择 Data is encrypted(数据已加密),并输入用于加密数据的 KMS 密钥 Amazon Resource Name(ARN)。

    如果您选择 CSV 或 DELIMITER,则还可以选择分隔符字符,以及在指定的行编号实际上是列名而不是要加载的数据时是否忽略标题行

  8. 选择压缩方法来压缩文件。原定设置为无压缩。

  9. (可选)Advanced settings(高级设置)支持各种 Data conversion parameters(数据转换参数)和 Load operations(加载操作)。根据文件的需要输入此信息。

    有关数据转换和数据加载参数的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的数据转换参数数据加载操作

  10. 选择 Next(下一步)。

  11. 选择加载现有表

  12. 确认或选择 Target table(目标表)的位置,包括在其中加载数据的 Cluster or workgroup(集群或工作组)、Database(数据库)、Schema(模式)和 Table(表)名称。

  13. 选择具有从 Simple Storage Service(Amazon S3)加载数据所需的权限的 IAM role(IAM 角色)。

  14. (可选)选择列名称,将其输入到 Column mapping(列映射)中,以按输入数据文件的顺序映射列。

  15. 选择 Load data(加载数据)开启数据加载。

    加载完成后,查询编辑器将显示用于加载数据的生成 COPY 命令。将显示 COPY 的 Result(结果)。如果成功,您现在可以使用 SQL 从加载的表中选择数据。当出现错误时,请查询系统视图 STL_LOAD_ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_LOAD_ERRORS

将数据加载到新表时,查询编辑器 v2 首先在数据库中创建表,然后作为同一个工作流中的单独操作加载数据。

将数据加载到新表

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

  1. 在继续之前,请在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单(右键单击)创建与将要加载数据的集群或工作组的连接。

    选择 
                        LoadLoad data(加载数据)

  2. 对于数据来源,选择从 S3 存储桶加载

  3. S3 URI中,选择 Browse S3(浏览 S3)以查找包含要加载数据的 Simple Storage Service(Amazon S3)桶。

  4. 如果指定的 Amazon S3 桶与目标表不在同一个 Amazon Web Services 区域中,则针对数据所在的 Amazon Web Services 区域选择 S3 file location(S3 文件位置)。

  5. 如果 Simple Storage Service(Amazon S3)文件实际上包含多个 Simple Storage Service(Amazon S3)桶 URI 清单,选择This file is a manifest file(此文件是清单文件)。

  6. 为要上载的文件选择 File format(文件格式)。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式,您可以选择相应的 File options(文件选项)。如果数据已加密,您还可以选择 Data is encrypted(数据已加密),并输入用于加密数据的 KMS 密钥 Amazon Resource Name(ARN)。

    如果您选择 CSV 或 DELIMITER,则还可以选择分隔符字符,以及在指定的行编号实际上是列名而不是要加载的数据时是否忽略标题行

  7. 选择压缩方法来压缩文件。原定设置为无压缩。

  8. (可选)Advanced settings(高级设置)支持各种 Data conversion parameters(数据转换参数)和 Load operations(加载操作)。根据文件的需要输入此信息。

    有关数据转换和数据加载参数的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的数据转换参数数据加载操作

  9. 选择 Next(下一步)。

  10. 选择加载新表

    表列根据输入数据推断得出。您可以通过添加列和表详细信息来修改表架构的定义。要恢复到查询编辑器 v2 推断的表架构,请选择还原为默认值

  11. 确认或选择目标表的位置,包括在其中加载数据的集群或工作组数据库架构。输入要创建的的名称。

  12. 选择具有从 Simple Storage Service(Amazon S3)加载数据所需的权限的 IAM role(IAM 角色)。

  13. 选择创建表即可使用所示的定义创建表。

    此时将显示表定义的复查摘要。系统会在数据库中创建表。以后要删除该表时,请运行 DROP TABLE SQL 命令。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 DROP TABLE

  14. 选择 Load data(加载数据)开启数据加载。

    加载完成后,查询编辑器将显示用于加载数据的生成 COPY 命令。将显示 COPY 的 Result(结果)。如果成功,您现在可以使用 SQL 从加载的表中选择数据。当出现错误时,请查询系统视图 STL_LOAD_ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_LOAD_ERRORS

从本地文件设置和工作流加载数据

您可从本地文件将数据加载到现有表或新表中。

管理员设置从本地文件加载数据

查询编辑器 v2 管理员必须在 Account settings(账户设置)窗口中指定常用 Amazon S3 桶。必须为账户用户配置适当的权限。

  • 所需的 IAM 权限 – 从本地文件加载的用户必须拥有 s3:ListBuckets3:GetBucketLocations3:putObjects3:getObjects3:deleteObject 权限。可以指定 optional-prefix,以将查询编辑器 v2 对此桶相关的使用限制为具有此前缀的对象。将同一 Amazon S3 桶用于查询编辑器 v2 以外的用途时,您可以使用此选项。有关桶和前缀的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的管理用户对特定文件夹的访问权限。为确保不允许跨用户访问数据,我们建议查询编辑器 v2 管理员使用 Amazon S3 存储桶策略来限制基于 aws:userid 的对象访问权限。以下示例允许 Amazon S3 对 <staging-bucket-name> 拥有权限,并仅对前缀为 aws:userid 的 Amazon S3 对象进行读/写访问。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<staging-bucket-name>" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*" ] } ] }
  • 数据分离 – 我们建议用户不要访问彼此的数据(即使是短暂的访问)。从本地文件加载将使用查询编辑器 v2 管理员设置的暂存 Amazon S3 桶。为暂存桶配置桶策略,以在用户之间提供数据分离。以下示例显示了在 <staging-bucket-name> 的用户之间分离数据的桶策略。

    { "Version": "2012-10-17", "Statement": [ {"Sid": "userIdPolicy", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "NotResource": [ "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*" ] } ] }

从本地文件加载数据

将本地文件数据加载到现有表中

您的查询编辑器 v2 管理员必须在账户设置窗口中指定公共 Amazon S3 存储桶。查询编辑器 v2 会自动将本地文件上传到账户使用的公共 Amazon S3 存储桶,然后使用 COPY 命令加载数据。在查询编辑器 v2 加载本地文件窗口中生成和运行的 COPY 命令支持从 Amazon S3 复制的 COPY 命令语法可用的许多参数。有关 COPY 命令及其用于从 Amazon S3 加载数据的选项的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 Amazon S3 中的 COPY 命令

  1. 确认表已在要加载数据的数据库中创建。

  2. 在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单(右键单击)创建与将要加载数据的集群或工作组的连接。

  3. 选择 
                    LoadLoad data(加载数据)

  4. 对于 Data source(数据来源),选择 Load from local file(从本地文件中加载)。

  5. 选择浏览以查找包含数据的文件来加载文件。默认情况下,会显示扩展名为 .csv.avro.parquet.orc 的文件,但您可以选择其他文件类型。最大文件大小为 5MB。

  6. 为要上载的文件选择 File format(文件格式)。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式,您可以选择相应的 File options(文件选项)。如果数据已加密,您还可以选择 Data is encrypted(数据已加密),并输入用于加密数据的 KMS 密钥 Amazon Resource Name(ARN)。

    如果您选择 CSV 或 DELIMITER,则还可以选择分隔符字符,以及在指定的行编号实际上是列名而不是要加载的数据时是否忽略标题行

  7. (可选)Advanced settings(高级设置)支持各种 Data conversion parameters(数据转换参数)和 Load operations(加载操作)。根据文件的需要输入此信息。

    有关数据转换和数据加载参数的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的数据转换参数数据加载操作

  8. 选择 Next(下一步)。

  9. 选择加载现有表

  10. 确认或选择 Target table(目标表)的位置,包括在其中加载数据的 Cluster or workgroup(集群或工作组)、Database(数据库)、Schema(模式)和 Table(表)名称。

  11. (可选)您可以选择列名称以输入到 Column mapping(列映射)中,以按输入数据文件的顺序映射列。

  12. 选择 Load data(加载数据)开启数据加载。

    加载完成后,无论加载成功与否,都会显示一条消息。如果成功,您现在可以使用 SQL 从加载的表中选择数据。当出现错误时,请查询系统视图 STL_LOAD_ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_LOAD_ERRORS

    用于加载数据的 COPY 命令模板出现在您的 Query history(查询历史记录)中。此 COPY 命令模板显示了一些使用的参数,但它不能直接在编辑器选项卡中运行。有关查询历史记录的更多信息,请参阅查看查询和选项卡历史记录

将数据加载到新表时,查询编辑器 v2 首先在数据库中创建表,然后作为同一个工作流中的单独操作加载数据。

将本地文件数据加载到新表

查询编辑器 v2 管理员必须在 Account settings(账户设置)窗口中指定常用 Amazon S3 桶。本地文件会自动上载到您的账户使用的一个公共 Amazon S3 桶,然后查询编辑器 v2 使用 COPY 命令加载数据。在查询编辑器 v2 加载本地文件窗口中生成和运行的 COPY 命令支持从 Amazon S3 复制的 COPY 命令语法可用的许多参数。有关 COPY 命令及其用于从 Amazon S3 加载数据的选项的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 Amazon S3 中的 COPY 命令

  1. 在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单(右键单击)创建与将要加载数据的集群或工作组的连接。

  2. 选择 
                        LoadLoad data(加载数据)

  3. 对于 Data source(数据来源),选择 Load from local file(从本地文件中加载)。

  4. 选择浏览以查找包含数据的文件来加载文件。默认情况下,会显示扩展名为 .csv.avro.parquet.orc 的文件,但您可以选择其他文件类型。最大文件大小为 5MB。

  5. 为要上载的文件选择 File format(文件格式)。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式,您可以选择相应的 File options(文件选项)。如果数据已加密,您还可以选择 Data is encrypted(数据已加密),并输入用于加密数据的 KMS 密钥 Amazon Resource Name(ARN)。

    如果您选择 CSV 或 DELIMITER,则还可以选择分隔符字符,以及在指定的行编号实际上是列名而不是要加载的数据时是否忽略标题行

  6. (可选)Advanced settings(高级设置)支持各种 Data conversion parameters(数据转换参数)和 Load operations(加载操作)。根据文件的需要输入此信息。

    有关数据转换和数据加载参数的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的数据转换参数数据加载操作

  7. 选择 Next(下一步)。

  8. 选择加载新表

  9. 确认或选择目标表的位置,包括在其中加载数据的集群或工作组数据库架构。输入要创建的的名称。

  10. 选择创建表即可使用所示的定义创建表。

    此时将显示表定义的复查摘要。系统会在数据库中创建表。以后要删除该表时,请运行 DROP TABLE SQL 命令。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 DROP TABLE

  11. 选择 Load data(加载数据)开启数据加载。

    加载完成后,将会显示一条消息,指示加载是否成功。如果成功,您现在可以使用 SQL 从加载的表中选择数据。当出现错误时,请查询系统视图 STL_LOAD_ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_LOAD_ERRORS

    用于加载数据的 COPY 命令模板出现在您的 Query history(查询历史记录)中。此 COPY 命令模板显示了一些使用的参数,但它不能直接在编辑器选项卡中运行。有关查询历史记录的更多信息,请参阅查看查询和选项卡历史记录