使用查询编辑器查询数据库 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用查询编辑器查询数据库

使用查询编辑器是在 Amazon Redshift 集群托管的数据库上运行查询的一种简单方法。创建集群后,您可以使用 Amazon Redshift 控制台上的查询编辑器立即运行查询。

2021 年 2 月,部署了更新的查询编辑器,并更改了使用查询编辑器的授权权限。新的查询编辑器使用 Amazon Redshift 数据 API 来运行查询。这些区域有:AmazonRedshiftQueryEditor策略,这是Amazon管理Amazon Identity and Access Management(IAM) 策略,已更新为包含必要的权限。如果您有自定义 IAM 策略,请务必更新它。使用AmazonRedshiftQueryEditor作为指南。对的更改AmazonRedshiftQueryEditor中支持的脚本编写选项如下:

  • 管理查询编辑器语句结果的权限需要语句所有者用户。

  • 已添加使用 Secrets Manager 连接到数据库的权限。

有关更多信息,请参阅 使用 Amazon Redshift 控制台查询编辑器所需的权限

从新的查询编辑器连接到集群时,可以使用两种身份验证方法之一,如使用查询编辑器连接

Amazon Redshift 控制台上的旧查询编辑器可在有限的时间内使用。您可以切换到它并返回查询编辑器控制台页面。使用旧的查询编辑器,使用现有权限。有关更多信息,请参阅 使用旧查询编辑器进行连接

使用查询编辑器可以执行以下操作:

  • 运行单个 SQL 语句查询。

  • 将大小为 100 MB 的结果集下载到一个逗号分隔值 (CSV) 文件。

  • 保存查询以供重用。您无法在欧洲(巴黎)区域、亚太地区(大阪)区域、亚太地区(香港)区域或中东(巴林)区域、巴林)区域保存查询。

  • 查看用户定义表的查询运行时详细信息。

  • 将查询调度为以后的某个时间运行。

  • 查看您在查询编辑器中创建的查询的历史记录。

  • 使用增强型 VPC 路由对集群运行查询。

查询编辑器注意事项

在使用查询编辑器时,请考虑以下事项:

  • 查询的最长持续时间为 24 小时。

  • 最大小为 100 MB。如果调用返回的响应数据超过 100 MB,则调用将终止。

  • 查询结果的最长保留时间为 24 小时。

  • 最大查询语句大小为 100 KB。

  • 集群必须位于 Amazon VPC 服务的 Virtual Private Cloud (VPC) 中。

  • 不能在查询编辑器中使用事务处理。有关事务的更多信息,请参阅BEGIN中的Amazon Redshift 数据库开发人员指南

  • 您可以保存最长为 3,000 个字符的查询。

启用对查询编辑器的访问

要访问查询编辑器,您需要相应权限。若要启用访问,请将AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess Amazon管理的策略,用于访问集群的 IAM 用户。您可以使用 IAM 控制台(https://console.aws.amazon.com/iam/)以附加 IAM 策略。

如果您已创建 IAM 用户来访问 Amazon Redshift,则可以将AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess Amazon托管策略传送给该用户。如果您尚未创建 IAM 用户,则可以创建一个,然后将策略附加到 IAM 用户。

这些区域有:Amazon托管策略AmazonRedshiftQueryEditor允许操作redshift:GetClusterCredentials,默认情况下该功能会为数据库用户提供对数据库的超级用户访问权限。要限制访问,您可以执行下列操作之一:

  • 创建自定义策略,该策略允许调用redshift:GetClusterCredentials并将资源限制为DbUser

  • 向用户添加拒绝权限的策略redshift:GetClusterCredentials,然后要求用户使用临时凭证登录查询编辑器。例如,拒绝策略可能与以下策略相似。

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "redshift:GetClusterCredentials", "Resource": "*" } }

有关更多信息,请参阅 创建有权调用 GetClusterCredentials 的 IAM 角色或用户

如果您被授予访问 Amazon Redshift 查询编辑器的权限,方法是附加Amazon托管策略AmazonRedshiftQueryEditor,那么你可以列出所有秘密。但是,您只能创建和检索使用密钥标记的密钥RedshiftQueryOwner和值${aws:userid}。如果您从 Amazon Redshift 查询编辑器创建密钥,则会自动标记该密钥。要使用不是通过 Amazon Redshift 查询编辑器创建的密钥,请确认密钥是否使用RedshiftQueryOwner和您的唯一 IAM 用户标识符的值,例如AIDACKCEVSQ6C2EXAMPLE

附加查询编辑器所需的 IAM 策略

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 选择 Users (用户)

  3. 选择需要访问查询编辑器的用户。

  4. 选择 Add permissions (添加权限)

  5. 选择直接附加现有策略

  6. 对于策略名称,选择 AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess

  7. 选择 Next:。审核

  8. 选择 Add permissions (添加权限)

使用查询编辑器连接

使用查询编辑器连接到集群时,您需要使用下列身份验证方法之一。每种方法都需要来自 Amazon Redshift 控制台的不同输入组合。

Amazon Secrets Manager

使用此方法,为秘密 arn中存储的Amazon Secrets Manager。此密钥包含用于连接到数据库的凭据。

临时凭证

使用此方法,提供database数据库用户值。

在 Amazon Secrets Manager 中存储数据库凭证

在调用查询编辑器时,您可以使用Amazon Secrets Manager。要通过此方式传递凭证,您需要指定密钥的名称或 Amazon 资源名称 (ARN)。

有关最低权限的更多信息,请参阅使用 创建和管理密钥Amazon Secrets Manager中的Amazon Secrets Manager用户指南

将凭证存储到 Amazon Redshift 集群的密钥中

  1. 使用Amazon Secrets Manager创建包含集群凭证的密钥。当您选择存储新密钥中,选择Redshift 群集的凭据。存储的值用户名(数据库用户)、密码, 和数据库群集(集群标识符)。

    有关说明,请参阅创建基本密钥中的Amazon Secrets Manager用户指南

  2. 使用 Amazon Secrets Manager 控制台查看您创建的密钥的详细信息,或运行 aws secretsmanager describe-secret Amazon CLI 命令。

使用旧查询编辑器进行连接

以下集群节点类型支持旧的查询编辑器:

  • dc1.8xlarge

  • dc2.large

  • dc2.8xlarge

  • ds2.8xlarge

  • 原有 3.xlplus

  • ra3.4xlarge

  • ra3.16xlarge

在 Amazon Redshift 控制台上使用旧的查询编辑器时,请注意以下注意事项:

  • 最多 50 个用户可以同时使用查询编辑器连接到一个集群。

  • 连接到集群的最大用户数包括通过查询编辑器连接的用户数。

  • 最多可以有 50 个工作负载管理 (WLM) 查询槽同时处于活动状态。有关查询槽的更多信息,请参阅实施工作负载管理

  • 查询编辑器仅运行可在 10 分钟内完成的短查询。

  • 查询结果集分页为每页 100 行。

  • 您不能将查询编辑器与增强型 VPC 路由一起使用。有关更多信息,请参阅 Amazon Redshift 中的增强型 VPC 路由

  • 不能在查询编辑器中使用事务处理。有关事务的更多信息,请参阅BEGIN中的Amazon Redshift 数据库开发人员指南

  • 您可以保存最长为 3,000 个字符的查询。

要访问旧查询编辑器,您需要相应权限。若要启用访问,请将Amazon托管策略AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess,以获取用于访问集群的 IAM 用户的 IAM 用户的 IAM 权限。

如果您已创建 IAM 用户来访问 Amazon Redshift,则可以将AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess策略发送给该用户。如果您尚未创建 IAM 用户,则可以创建一个,然后将策略附加到 IAM 用户。

这些区域有:Amazon托管策略AmazonRedshiftQueryEditor允许操作redshift:GetClusterCredentials,默认情况下该功能会为数据库用户提供对数据库的超级用户访问权限。要限制访问,您可以执行下列操作之一:

  • 创建自定义策略,该策略允许调用redshift:GetClusterCredentials并将资源限制为DbUser

  • 向用户添加拒绝权限的策略redshift:GetClusterCredentials,然后要求用户使用临时凭证登录查询编辑器。例如,拒绝策略可能与以下策略相似。

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "redshift:GetClusterCredentials", "Resource": "*" } }

有关更多信息,请参阅 创建有权调用 GetClusterCredentials 的 IAM 角色或用户

使用旧查询编辑器连接到集群时,您需要使用下列身份验证方法之一。每种方法都需要来自 Amazon Redshift 控制台的不同输入组合。

使用数据库密码 Connect

使用此方法,提供默认数据库的主用户密码。您在创建集群时提供了此密码。

临时凭证

使用此方法,提供database数据库用户值。

使用查询编辑器

在以下示例中,您使用查询编辑器执行以下任务:

  • 运行 SQL 命令。

  • 查看查询执行详细信息。

  • 保存查询。

  • 下载查询结果集。

要完成以下示例,您需要现有 Amazon Redshift 集群。如果您没有集群,请通过执行创建集群中所述的过程来创建一个集群。

注意

Amazon Redshift 提供新的控制台。根据您使用的控制台,选择新控制台原始控制台说明。默认情况下会打开新控制台说明。

在 Amazon Redshift 控制台上使用查询编辑器

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择 EDITOR (编辑器),然后连接到集群中的数据库。

  3. 对于架构,选择公有以基于该架构创建新表。

  4. 在查询编辑器窗口中输入以下内容,然后选择 Run (运行) 以创建新表。

    create table shoes( shoetype varchar (10), color varchar(10));
  5. 选择 Clear (清除)

  6. 在查询编辑器窗口中输入以下命令,然后选择 Run (运行) 以向表中添加行。

    insert into shoes values ('loafers', 'brown'), ('sandals', 'black');
  7. 选择 Clear (清除)

  8. 在查询编辑器窗口中输入以下命令,然后选择 Run (运行) 以查询新表。

    select * from shoes;

    Query results (查询结果) 将显示相应结果。

    鞋子类型 颜色

    sandals

    black

    loafers

    brown

  9. 选择 Execution (执行) 以查看运行详细信息。

  10. 选择 Data (数据),然后选择 Export (导出) 以便以文件形式下载查询结果。

使用查询编辑器

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航窗格中,选择查询编辑器

  3. 对于架构,选择公有以基于该架构创建新表。

  4. 在查询编辑器窗口中输入以下内容,然后选择 Run query (运行查询) 以创建新表。

    create table shoes( shoetype varchar (10), color varchar(10));
  5. 选择 Clear (清除)

  6. 在查询编辑器窗口中输入以下命令,然后选择 Run query (运行查询) 以向表中添加行。

    insert into shoes values ('loafers', 'brown'), ('sandals', 'black');
  7. 选择 Clear (清除)

  8. 在查询编辑器窗口中输入以下命令,然后选择 Run query (运行查询) 以查询新表。

    select * from shoes;

    您应该看到以下结果。

  9. 选择 View execution (查看执行) 以查看执行详细信息。

  10. 选择 Download CSV (下载 CSV) 以将查询结果作为 CSV 文件下载。