

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

# 访问 Amazon QLDB
<a name="accessing"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

您可以使用、 AWS Command Line Interface AWS CLI() 或 QLDB API AWS 管理控制台访问亚马逊 QLDB。下面各部分介绍了使用这些选项，以及使用的先决条件。

## 先决条件
<a name="accessing.prereqs"></a>

在访问 QLDB 之前，如果尚未设置，则必须先 AWS 账户 进行设置。

**Topics**
+ [

### 注册获取 AWS 账户
](#sign-up-for-aws)
+ [

### 创建具有管理访问权限的用户
](#create-an-admin)
+ [

### 管理 IAM 中的 QLDB 权限
](#accessing.prereqs.permissions)
+ [

### 授权以编程方式访问（可选）
](#grant-programmatic-access)

### 注册获取 AWS 账户
<a name="sign-up-for-aws"></a>

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 [https://aws.amazon.com/](https://aws.amazon.com/)并选择 “**我的账户”，查看您当前的账户活动并管理您的账户**。

### 创建具有管理访问权限的用户
<a name="create-an-admin"></a>

注册后，请保护您的安全 AWS 账户 AWS 账户根用户 AWS IAM Identity Center，启用并创建管理用户，这样您就不会使用 root 用户执行日常任务。

**保护你的 AWS 账户根用户**

1.  选择 **Root 用户**并输入您的 AWS 账户 电子邮件地址，以账户所有者的身份登录。[AWS 管理控制台](https://console.aws.amazon.com/)在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅 I [A *M* 用户指南中的为 AWS 账户 根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**创建具有管理访问权限的用户**

1. 启用 IAM Identity Center。

   有关说明，请参阅**《AWS IAM Identity Center 用户指南》中的 [Enabling AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，为用户授予管理访问权限。

   有关使用 IAM Identity Center 目录 作为身份源的教程，请参阅《[用户*指南》 IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center 用户*访问权限](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理访问权限的用户身份登录**
+ 要使用您的 IAM Identity Center 用户身份登录，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录网址。

  有关使用 IAM Identity Center 用户[登录的帮助，请参阅*AWS 登录 用户指南*中的登录 AWS 访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**将访问权限分配给其他用户**

1. 在 IAM Identity Center 中，创建一个权限集，该权限集遵循应用最低权限的最佳做法。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)。

### 管理 IAM 中的 QLDB 权限
<a name="accessing.prereqs.permissions"></a>

有关使用 AWS Identity and Access Management (IAM) 管理用户的 QLDB 权限的信息，请参阅。[Amazon MQ 如何与 IAM 协同工作](security_iam_service-with-iam.md)

### 授权以编程方式访问（可选）
<a name="grant-programmatic-access"></a>

如果用户想在 AWS 外部进行交互，则需要编程访问权限 AWS 管理控制台。授予编程访问权限的方式取决于正在访问的用户类型 AWS。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/qldb/latest/developerguide/accessing.html)  | 
| IAM | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 | 按照 IAM 用户指南中的将[临时证书与 AWS 资源配合使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/qldb/latest/developerguide/accessing.html)  | 

## 如何访问Amazon QLDB
<a name="accessing.how-to"></a>

完成设置的先决条件后 AWS 账户，请参阅以下主题以了解有关如何访问 QLDB 的更多信息：
+ [使用 控制台](console_QLDB.md)
+ [使用 AWS CLI （仅限管理 API）](Tools.CLI.md)
+ [使用 Amazon QLDB Shell（仅限数据 API）](data-shell.md)
+ [使用 API](Using.API.md)

# 通过控制台访问 Amazon QLDB
<a name="console_QLDB"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

[您可以通过 /qldb 访问亚马逊 QLDB 版https://console.aws.amazon.com。 AWS 管理控制台](https://console.aws.amazon.com/qldb)

您可以使用控制台在 QLDB 中执行以下操作：
+ 创建、删除、描述和列出分类账。
+ 使用*PartiQL 编辑器*运行[PartiQL](ql-reference.md)语句。
+ 管理 QLDB 资源标签。
+ 以加密方式验证日志数据。
+ 导出或流式传输日志数据块。

要了解如何创建 Amazon QLDB 分类账和设置示例应用程序数据，请参阅 [Amazon QLDB 控制台入门](getting-started.md)。

## PartiQL 编辑器快速参考
<a name="partiql-editor-reference"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

Amazon QLDB 支持 [PartiQL](https://partiql.org/) 的子集作为其查询语言，支持 [Amazon Ion](http://amzn.github.io/ion-docs/)作为其文档数据格式。有关在 PartiQL 上实施 QLDB 的完整指南和更多详细信息，请参阅[Amazon QLDB PartiQL 参考](ql-reference.md)。

以下主题提供了有关如何在 QLDB 中使用 PartiQL 的快速参考概述。

**Topics**
+ [

### 关于 QLDB 中 PartiQL 的快速小贴士
](#partiql-editor-ref-tips)
+ [

### 命令
](#partiql-editor-ref-commands)
+ [

### System-defined 视图
](#partiql-editor-ref-views)
+ [

### 基本语法规则
](#partiql-editor-ref-syntax)
+ [

### PartiQL 编辑器键盘快捷键
](#console_QLDB.partiql-editor-shortcuts)

### 关于 QLDB 中 PartiQL 的快速小贴士
<a name="partiql-editor-ref-tips"></a>

以下是在 QLDB 中使用 PartiQL 的提示和最佳实践小贴士：
+ **了解并发和事务限制** — `SELECT` 查询等所有语句都应遵守[乐观并发控制（OCC）](concurrency.md)冲突和[事务限制](limits.md#limits.fixed)，包括 30 秒事务暂停。
+ **使用索引** - 使用高基数索引，并运行有针对性的查询来优化语句并避免全表扫描。要了解更多信息，请参阅[优化查询性能](working.optimize.md)。
+ **使用相等谓词** - 索引查找需要*相等*运算符（`=` 或 `IN`）。不等式运算符（`<`、`>`、`LIKE`、`BETWEEN`）不符合索引查找的条件，因此会生成全表扫描。
+ **仅使用内部联接** - QLDB 仅支持内部联接。根据最佳实践标准，在为要加入的每个表编制索引的字段上进行联接。为联接条件与相等谓词选择高基数索引。

### 命令
<a name="partiql-editor-ref-commands"></a>

Amazon QLDB 支持以下 PartiQL 命令。


**数据定义语言 (DDL)**  

| 命令 | 描述 | 
| --- | --- | 
| [CREATE INDEX](ql-reference.create-index.md) | 为表内的顶级文档字段创建索引。 | 
| [CREATE TABLE](ql-reference.create-table.md) | 创建表。 | 
| [DROP INDEX](ql-reference.drop-index.md) | 从表中删除索引。 | 
| [DROP TABLE](ql-reference.drop-table.md) | 停用现有表。 | 
| [取消删除表](ql-reference.undrop-table.md) | 重新激活非活动表。 | 


**数据操作语言（DML）**  

| 命令 | 描述 | 
| --- | --- | 
| [DELETE](ql-reference.delete.md) | 通过创建文档最终修订版，将活动文档标记为已删除。 | 
| [FROM（插入、删除或设置）](ql-reference.from.md) | 语义与UPDATE相同。 | 
| [INSERT](ql-reference.insert.md) | 向表格中添加一个或多个 [文档](ql-reference.docs.md)。 | 
| [SELECT](ql-reference.select.md) | 从一个或多个表中检索数据。 | 
| [UPDATE](ql-reference.update.md) | 更新、插入或移除文档中的特定元素。 | 

#### DML 语句示例
<a name="partiql-editor-ref-commands-examples"></a>

**INSERT**

```
INSERT INTO VehicleRegistration VALUE
{
    'VIN' : 'KM8SRDHF6EU074761', --string
    'RegNum' : 1722, --integer
    'PendingPenaltyTicketAmount' : 130.75, --decimal
    'Owners' : { --nested struct
        'PrimaryOwner' : { 'PersonId': '294jJ3YUoH1IEEm8GSabOs' },
        'SecondaryOwners' : [ --list of structs
            { 'PersonId' : '1nmeDdLo3AhGswBtyM1eYh' },
            { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' }
        ]
    },
    'ValidToDate' : `2020-06-25T` --Ion timestamp literal with day precision
}
```

**UPDATE-INSERT**

```
UPDATE Vehicle AS v
INSERT INTO v VALUE 26500 AT 'Mileage'
WHERE v.VIN = '1N4AL11D75C109151'
```

**UPDATE-REMOVE**

```
UPDATE Person AS p
REMOVE p.Address
WHERE p.GovId = '111-22-3333'
```

**选择 - 关联子查询**

```
SELECT r.VIN, o.SecondaryOwners
FROM VehicleRegistration AS r, @r.Owners AS o
WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

**选择 - 内部联接**

```
SELECT v.Make, v.Model, r.Owners
FROM VehicleRegistration AS r INNER JOIN Vehicle AS v
ON r.VIN = v.VIN
WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

**选择 - 使用 BY 子句获取文档 ID**

```
SELECT r_id FROM VehicleRegistration AS r BY r_id
WHERE r.VIN = '1HVBBAANXWH544237'
```

### System-defined 视图
<a name="partiql-editor-ref-views"></a>

QLDB 支持以下系统定义表视图。


| 视图 | 描述 | 
| --- | --- | 
| table\$1name | 表格默认[用户视图](working.userdata.md)，仅包含用户数据的当前状态。 | 
| \$1ql\$1committed\$1table\$1name | 表格的完整系统定义[提交视图](working.metadata.md)，其中包含用户数据和系统生成的元数据（例如文档 ID）的当前状态。 | 
| history(table\$1name) | 内置[历史记录函数](working.history.md)，可返回表格的完整修订历史记录。 | 

### 基本语法规则
<a name="partiql-editor-ref-syntax"></a>

QLDB 支持以下适用于 PartiQL 的基本语法规则。


| 字符 | 描述 | 
| --- | --- | 
| ' | 在单引号表示字符串值或 Amazon Ion 结构的字段名称。 | 
| " | 双引号表示带引号的标识符，如用作表名的 [保留字](ql-reference.reserved.md)。 | 
| ` | 反引号表示 Ion 文本值。 | 
| . | 用点表示法访问父结构的字段名称。 | 
| [ ] | 方括号定义 Ion list，或者表示现有列表从零开始的序数。 | 
| \$1 \$1 | 大括号定义 Ion struct。 | 
| << >> | 双尖括号定义了 PartiQL 数据包，这是无序集合。你用一个数据包将多个文档插入表格。 | 
| 区分大小写 | 所有 QLDB 系统对象名称（包括字段名、表名）均区分大小写。 | 

### PartiQL 编辑器键盘快捷键
<a name="console_QLDB.partiql-editor-shortcuts"></a>

QLDB 控制台上的 *PartiQL 编辑器*支持以下键盘快捷键。


| 操作 | macOS | Windows | 
| --- | --- | --- | 
| 运行 | Cmd\$1Return | Ctrl\$1Enter | 
| 注释 | Cmd\$1/ | Ctrl\$1/ | 
| 清除 | Cmd\$1Shift\$1Delete | Ctrl\$1Shift\$1Delete | 

# 使用 AWS CLI （仅限管理 API）访问亚马逊 QLDB
<a name="Tools.CLI"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

您可以使用 AWS Command Line Interface (AWS CLI) AWS 服务 从命令行控制多个命令并通过脚本自动执行这些操作。您可以根据需要使用 AWS CLI 进行一次性操作。您还可以使用它在实用工具脚本中嵌入 Amazon QLDB 操作。

要进行 CLI 访问，您需要访问密钥 ID 和秘密访问密钥。如果可能，请使用临时凭证代替长期访问密钥。临时凭证包括访问密钥 ID、秘密访问密钥，以及一个指示凭证何时到期的安全令牌。有关更多信息，请参阅 *IAM 用户指南*中的将[临时证书与 AWS 资源配合使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

有关 AWS CLI中对 QLDB 可用的所有命令的完整列表和使用示例，请参阅 [AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html)。

**注意**  
 AWS CLI 仅支持中列出的`qldb`管理 API 操作[Amazon QLDB API 参考](api-reference.md)。此 API 仅用于管理分类账资源和非事务数据操作。  
要使用命令行界面通过 `qldb-session`API 运行数据事务，请参阅 [使用 QLDB Shell 访问Amazon QLDB（仅限数据 API）](data-shell.md)。

**Topics**
+ [

## 安装和配置 AWS CLI
](#Tools.CLI.InstallingAndConfiguring)
+ [

## 将 AWS CLI 与 QLDB 搭配使用
](#Tools.CLI.UsingWithQLDB)

## 安装和配置 AWS CLI
<a name="Tools.CLI.InstallingAndConfiguring"></a>

它们可以在 Linux、macOS 或 Windows 上 AWS CLI 运行。要进行安装和配置，请参见 *AWS Command Line Interface 用户指南* 的以下说明：

1. [安装或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

1. [快速设置](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)

## 将 AWS CLI 与 QLDB 搭配使用
<a name="Tools.CLI.UsingWithQLDB"></a>

命令行格式包含 Amazon QLDB 操作名称，后跟该操作的参数。除了 AWS CLI JSON 之外，还支持参数值的简写语法。

 使用 `help` 帮助列出 QLDB 中的所有可用命令：

```
aws qldb help
```

 您还可以使用 `help` 来描述特定命令并了解有关其用法的详细信息：

```
aws qldb create-ledger help
```

 例如，要创建分类账，执行以下操作：

```
aws qldb create-ledger --name my-example-ledger --permissions-mode STANDARD
```

# 使用 QLDB Shell 访问Amazon QLDB（仅限数据 API）
<a name="data-shell"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

Amazon QLDB 提供了一个命令行 Shell，用于与事务数据 API 进行交互。使用 QLDB Shell，您可以对分类账数据运行 [PartiQL](ql-reference.md)语句。

这个 shell 的最新版本是用 Rust 编写的，在默认分支的 [awslabs/ GitHub](https://github.com/awslabs/amazon-qldb-shell) 存储库中是开源amazon-qldb-shell的。`main`Python 版本（v1）也仍然可以在 `master` 分支的同一个存储库中使用。

**注意**  
Amazon QLDB Shell 仅支持`qldb-session`事务数据 API。此 API 仅用于在 QLDB 分类账上运行 PartiQL 语句。  
要使用命令行界面与 `qldb` 管理 API 操作进行交互，请参阅 [使用 AWS CLI （仅限管理 API）访问亚马逊 QLDB](Tools.CLI.md)。

此工具不会整合至应用程序中或用于生产目的。该工具旨在让您快速试验 QLDB 和 PartiQL。

以下各节介绍如何开始使用 QLDB Shell。

**Topics**
+ [

## 先决条件
](#data-shell-prerequisites)
+ [

## 安装 Shell
](#data-shell-install)
+ [

## 调用 Shell
](#data-shell-invoking)
+ [

## Shell 参数
](#data-shell-params)
+ [

## 命令参考
](#data-shell-reference)
+ [

## 运行单独语句
](#data-shell-indiv-statements)
+ [

## 管理事务
](#data-shell-transactions)
+ [

## 退出 Shell
](#data-shell-exiting)
+ [

## 示例
](#data-shell-examples)

## 先决条件
<a name="data-shell-prerequisites"></a>

开始使用 QLDB Shell之前，您必须执行以下操作：

1. 按照中的 AWS 设置说明进行操作[访问 Amazon QLDB](accessing.md)。这包括以下这些：

   1. 报名参加 AWS.

   1. 创建具有适当 QLDB 权限的用户。

   1. 授权以编程方式访问开发。

1. 设置您的 AWS 凭据和默认凭证 AWS 区域。有关说明，请参阅 *AWS Command Line Interface 用户指南*中的[配置基础](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。

   有关可用区域的完整列表，请参阅 *AWS 一般参考* 中的 [Amazon QLDB 端点和限额](https://docs.aws.amazon.com/general/latest/gr/qldb.html)。

1. 在分类账的 `STANDARD` 权限模式下，您必须创建 IAM 策略，以授予在适当表格上运行 PartiQL 语句的权限。要了解如何创建这些策略，请参阅 [请参阅《Amazon QLDB 开发人员》中的标准权限模式入门](getting-started-standard-mode.md)。

## 安装 Shell
<a name="data-shell-install"></a>

要安装最新版本的 QLDB 外壳，请参阅上的 README.md 文件[。](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#installation) GitHub[QLDB 在存储库的 “发布” 部分提供了适用于 Linux、macOS 和 Windows 的预建二进制文件。](https://github.com/awslabs/amazon-qldb-shell/releases) GitHub 

对于 macOS，Shell 与`aws/tap` [Homebrew](https://docs.brew.sh/) 选项卡集成。若要使用 Homebrew 在 macOS 上安装 Shell，请运行以下命令。

```
$ xcode-select --install # Required to use Homebrew
$ brew tap aws/tap # Add AWS as a Homebrew tap
$ brew install qldbshell
```

### 配置
<a name="data-shell-install.config"></a>

安装后，Shell 会加载初始化 `$XDG_CONFIG_HOME/qldbshell/config.ion` 期间位于的默认配置文件。在 Linux 和 macOS，此文件通常位于 `~/.config/qldbshell/config.ion`。如果这样的文件不存在，Shell 将按默认设置运行。

安装后可以手动创建 `config.ion` 文件。此配置文件采用 [Amazon Ion](ion.md) 数据格式。以下是最小 `config.ion` 文件的示例。

```
{
  default_ledger: "my-example-ledger"
}
```

如果配置文件中未设置`default_ledger`，则在调用 Shell 时必须使用`--ledger`参数。有关配置选项的完整列表，请参阅上的 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#configuration) 文件。 GitHub

## 调用 Shell
<a name="data-shell-invoking"></a>

要在命令行终端上为特定分类账调用 QLDB Shell，请运行以下命令。*my-example-ledger*用您的账本名称替换。

```
$ qldb --ledger my-example-ledger
```

此命令连接到您的默认命令 AWS 区域。要明确指定区域，您可以使用 `--region` 或 `--qldb-session-endpoint` 参数运行命令，如下一节所述。

调用 `qldb` Shell 会话后，您可输入以下类型的输入：
+ [Shell 命令](#data-shell-reference)
+ [在单独的事务中采用单个 Partiql 语句](#data-shell-indiv-statements)
+ [单个事务中包含多个 PartiQL 语句](#data-shell-transactions)

## Shell 参数
<a name="data-shell-params"></a>

要查看调用 Shell 的可用标志和选项的完整列表，请按如下方式运行带有 `--help` 标志的 `qldb` 命令。

```
$ qldb --help
```

以下是 `qldb` 命令的一些键标和选项。您可以添加这些可选参数来覆盖凭证配置文件、端点、结果格式和其他配置选项。 AWS 区域

**用法**

```
$ qldb [FLAGS] [OPTIONS]
```FLAGS

**`-h`, `--help`**  
打印帮助信息。

**`-v`, `--verbose`**  
配置日志详细程度。默认情况下，Shell 程序仅记录错误。要提高详细程度，请重复此参数（例如`-vv`）。最高等级为对应于`trace`的`-vvv`。

**`-V`, `--version`**  
打印版本信息。选项

**`-l`, `--ledger` *LEDGER\$1NAME***  
要连接的分类账的名称。如果`default_ledger`未在您的`config.ion`文件中设置，则其为 Shell 必填参数。在此文件中，您可以设置其他选项，如区域。

**`-c`, `--config` *CONFIG\$1FILE***  
可在其中定义任何 Shell 配置选项的文件。有关格式的详细信息和配置选项的完整列表，请参阅上的 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#configuration) 文件。 GitHub

**`-f`, `--format` `ion|table`**  
查询结果的输出格式。默认为 `ion`。

**`-p`, `--profile` *PROFILE***  
用于身份验证的 AWS 凭证配置文件的位置。  
如果未提供，shell 将使用您的默认 AWS 配置文件，该配置文件位于`~/.aws/credentials`。

**`-r`, `--region` *REGION\$1CODE***  
要 AWS 区域 连接的 QLDB 账本的代码。例如：`us-east-1`。  
如果未提供，则 shell 将连接到您的 AWS 配置文件中指定的默认值 AWS 区域 。

**`-s`, `--qldb-session-endpoint` *QLDB\$1SESSION\$1ENDPOINT***  
用于连接的 `qldb-session` API 端点。  
有关可用 QLDB 区域和端点的完整列表，请参阅 *AWS 一般参考*中的 [Amazon S3 端点和限额](https://docs.aws.amazon.com/general/latest/gr/qldb.html)。

## 命令参考
<a name="data-shell-reference"></a>

调用 `qldb`会话后，Shell 支持以下密钥和数据库命令：


**Shell 秘钥**  

| 键 | 函数描述 | 
| --- | --- | 
| Enter | 运行语句。 | 
|  Escape\$1Enter（macOS, Linux） Shift\$1Enter（Windows）  |  开始新行，输入一条跨越多行的语句。您也可以复制多行输入文本，然后将其粘贴至 Shell。 有关在 macOS 中设置Option而非Escape作为元密钥的说明，请参阅[OS X Daily](https://osxdaily.com/2013/02/01/use-option-as-meta-key-in-mac-os-x-terminal/)网站。  | 
| Ctrl\$1C | 取消当前命令。 | 
| Ctrl\$1D | 发出文件结束信号（EOF）并退出 Shell 的当前级别。如不在活动事务中，则退出 Shell。在活动事务中，请中止该事务。 | 


**Shell 数据库命令**  
<a name="data-shell-reference-commands"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/qldb/latest/developerguide/data-shell.html)

**注意**  
所有 QLDB Shell 命令均不区分大小写。

## 运行单独语句
<a name="data-shell-indiv-statements"></a>

除了 [README.md](https://github.com/awslabs/amazon-qldb-shell/blob/main/README.md#command-interface) 中列出的数据库命令和 Shell 元命令外，Shell 程序会将您输入的每条命令解释为单独的 PartiQL 语句。默认情况下，Shell 会启用`auto-commit`模式。此模式为可配置。

在`auto-commit`模式下，Shell 会在自己的事务中隐式运行每条语句，如果未发现错误，则自动提交事务。这意味着您不必在每次运行语句时都手动运行`start transaction`（或 `begin`）和 `commit`。

## 管理事务
<a name="data-shell-transactions"></a>

或者，QLDB Shell 允许您手动控制事务。您可在事务中以交互方式运行多个语句，也可以通过按顺序批处理命令和语句来以非交互方式运行多个语句。

### 交互式事务
<a name="data-shell-transactions.interactive"></a>

若要运行交互式事务，请执行以下步骤。

1. 要开始事务，请输入 `begin` 命令。

   ```
   qldb> begin
   ```

   开始事务后，Shell 将显示以下命令提示符。

   ```
   qldb *>  
   ```

1. 然后，您输入的每条事务都在同一笔事务中运行。
   + 例如，您可按以下方式运行单个语句。

     ```
     qldb *> SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'
     ```

     按下Enter后，Shell 会显示语句的结果。
   + 您也可以输入多个由分号（`;`）分隔符分隔的语句或者命令，如下所示。

     ```
     qldb *> SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; commit
     ```

1. 若要结束事务，请输入以下命令之一。
   + 输入`commit`命令将您的事务提交至分类账日志账中。

     ```
     qldb *> commit
     ```
   + 输入`abort`命令，以停止您的事务并拒绝您所做的任何更改。

     ```
     qldb *> abort
     transaction was aborted
     ```

**事务超时限制**

交互式事务遵守 QLDB [事务超时限制](limits.md#limits.fixed)。如果您未在事务启动后的 **30 秒**内提交此事务，QLDB 会自动使该事务过期，并拒绝事务期间所做的任何更改。

然后，Shell 不显示语句结果，而是显示一条过期错误消息并返回到普通的命令提示符。要重试，必须再次输入 `begin` 命令才能开始新的事务。

```
transaction failed after 1 attempts, last error: communication failure: Transaction 2UMpiJ5hh7WLjVgEiMLOoO has expired
```

### 非交互式事务
<a name="data-shell-transactions.noninteractive"></a>

您可以按以下顺序对命令和语句进行批处理，从而运行包含多条语句的完整事务。

```
qldb> begin; SELECT * FROM Vehicle WHERE VIN = '1N4AL11D75C109151'; SELECT * FROM Person p, DriversLicense l WHERE p.GovId = l.LicenseNumber; commit
```

必须用分号（`;`）分隔符分隔每条命令与语句。如果事务中的任何语句无效，则 Shell 会自动拒绝该事务。Shell 不会继续处理您随后输入的任何语句项。

您还可设置多笔事务。

```
qldb> begin; statement1; commit; begin; statement2; statement3; commit
```

与前面的示例类似的是，如果事务失败，Shell 将不会继续处理您输入的任何后续事务或语句。

如果您不结束事务，Shell 会切换至交互模式，并提示您输入下一个命令或语句。

```
qldb> begin; statement1; commit; begin
qldb *>
```

## 退出 Shell
<a name="data-shell-exiting"></a>

要退出当前 `qldb` Shell 会话，请输入`exit`或`quit`命令，或者在 Shell 不在事务中时使用键盘快捷键Ctrl\$1D。

```
qldb> exit
$
```

```
qldb> quit
$
```

## 示例
<a name="data-shell-examples"></a>

有关在 QLDB 中编写 PartiQL 语句的信息，请参阅[Amazon QLDB PartiQL 参考](ql-reference.md)。

**Example**  
以下示例显示基本命令常见序列。  
QLDB Shell 程序在自己的事务中运行本示例中的每条 PartiQL 语句。  
此示例假设分类账 `test-ledger` 已经存在且处于活动状态。

```
$ qldb --ledger test-ledger --region us-east-1

qldb> CREATE TABLE TestTable
qldb> INSERT INTO TestTable `{"Name": "John Doe"}`
qldb> SELECT * FROM TestTable
qldb> DROP TABLE TestTable
qldb> exit
```

# 使用 API 访问 Amazon QLDB
<a name="Using.API"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

 您可以使用 AWS 管理控制台 和 AWS Command Line Interface (AWS CLI) 与 Amazon QLDB 进行交互式协作。但是，要充分利用 QLDB，您可以使用 QLDB 驱动程序或 SDK 编写应用程序代码，以便使用与账本 AWS 进行交互。 APIs

该驱动程序允许您通过*事务数据* API 与 QLDB 交互。该 AWS 软件开发工具包支持与 *QLDB 资源管理 API* 的交互。有关这些内容的更多信息 APIs，请参阅[Amazon QLDB API 参考](api-reference.md)。

此驱动程序对[Java](https://aws.amazon.com/sdk-for-java)、[.NET](https://aws.amazon.com/sdk-for-net)、[Go](https://aws.amazon.com/sdk-for-go)、[Node.js](https://aws.amazon.com/sdk-for-node-js)和 [Python](https://aws.amazon.com/sdk-for-python) 中的 QLDB 提供支持。要快速开始使用这些语言，请参阅 [Amazon QLDB 驱动程序入门](getting-started-driver.md)。

必须先授予编程访问权限，然后才能在应用程序中使用 QLDB 驱动程序或 AWS SDK。有关更多信息，请参阅 [授予编程式访问权限](accessing.md#grant-programmatic-access)。