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

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

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

2021 年 2 月,部署了更新的查询编辑器,并更改了使用查询编辑器的授权权限。新的查询编辑器使用 Amazon Redshift 数据 API 来运行查询。作为 Amazon 托管 Amazon Identity and Access Management (IAM) 策略的 AmazonRedshiftQueryEditor 策略已更新为包含必要的权限。如果您有自定义 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) 中。

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

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

启用对查询编辑器的访问

要访问查询编辑器,您需要相应权限。要启用访问,请将用于 IAM 权限的 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 托管策略 AmazonRedshiftQueryEditor 为您授予了访问 Amazon Redshift 查询编辑器的权限,则您可以列出所有密钥。但是,您只能创建和检索使用密钥 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: Review (下一步:审核)

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

使用查询编辑器进行连接

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

Amazon Secrets Manager

使用此方法,为存储在 Amazon Secrets Manager 中的 secret-arn 提供一个密钥值。此密钥包含用于连接到数据库的凭证。

临时凭证

使用此方法,提供 databasedb-user 值。

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

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

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

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

  1. 使用 Amazon Secrets Manager 创建包含集群凭证的密钥。当您选择 Store a new secret(存储新密钥)时,选择 Credentials for Redshift cluster(Redshift 集群的凭证)。将 User name(用户名)(数据库用户)、Password(密码)和 DB cluster (数据库集群)(集群标识符)的值存储在您的密钥中。

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

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

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

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

  • dc1.8xlarge

  • dc2.large

  • dc2.8xlarge

  • ds2.8xlarge

  • ra3.xlplus

  • ra3.4xlarge

  • ra3.16xlarge

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

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

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

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

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

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

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

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

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

要访问旧查询编辑器,您需要相应权限。要启用访问,请将用于 IAM 权限的 Amazon-托管策略 AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess 附加到您要用于访问您的集群的 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 控制台的不同输入组合。

使用数据库密码连接

此方法要求提供默认数据库的管理员用户密码。您在创建集群时提供了此密码。

临时凭证

使用此方法,提供 databasedb-user 值。

使用查询编辑器

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

  • 运行 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 (查询结果) 将显示相应结果。

    Shoe 类型 颜色

    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 文件下载。