

# Amazon RDS 数据 API 操作参考
<a name="data-api-operations"></a>

Amazon RDS 数据 API 提供了以下操作来执行 SQL 语句。


****  

|  Data API 操作  |  AWS CLI command  |  描述  | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/rds-data/execute-statement.html](https://docs.aws.amazon.com/cli/latest/reference/rds-data/execute-statement.html)  |  对数据库运行 SQL 语句。  | 
|  [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BatchExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BatchExecuteStatement.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/rds-data/batch-execute-statement.html](https://docs.aws.amazon.com/cli/latest/reference/rds-data/batch-execute-statement.html)  |  对数据数组运行批处理 SQL 语句，以执行批量更新和插入操作。您可以使用参数集数组运行数据操作语言 (DML) 语句。相比单个插入和更新语句，批处理 SQL 语句可提供显著的性能改进。  | 

您可以使用任一操作来运行单独的 SQL 语句或运行事务。针对事务，数据 API 提供了以下操作。


****  

|  Data API 操作  |  AWS CLI command  |  描述  | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/rds-data/begin-transaction.html](https://docs.aws.amazon.com/cli/latest/reference/rds-data/begin-transaction.html)  |  开始 SQL 事务。  | 
|  [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_CommitTransaction.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_CommitTransaction.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/rds-data/commit-transaction.html](https://docs.aws.amazon.com/cli/latest/reference/rds-data/commit-transaction.html)  |  结束 SQL 事务并提交更改。  | 
|  [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_RollbackTransaction.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_RollbackTransaction.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/rds-data/rollback-transaction.html](https://docs.aws.amazon.com/cli/latest/reference/rds-data/rollback-transaction.html)  |  执行事务回滚。  | 

执行 SQL 语句和支持事务的操作具有以下常用 Data API 参数和 AWS CLI 选项。某些操作支持其他参数或选项。


****  

|  Data API 操作参数  |  AWS CLI 命令选项  |  必需  |  描述  | 
| --- | --- | --- | --- | 
|  `resourceArn`  |  `--resource-arn`  |  是  |  Aurora 数据库集群的 Amazon 资源名称（ARN）。集群必须与调用数据 API 的 IAM 角色或用户位于相同的 AWS 账户中。要使用其它账户访问集群，请代入该账户中的角色。  | 
|  `secretArn`  |  `--secret-arn`  |  是  |  允许访问数据库集群的密钥的名称或 ARN。  | 

RDS 数据 API 对于 Aurora MySQL 支持以下数据类型：
+ `TINYINT(1)`, `BOOLEAN`, `BOOL`
+ `TINYINT`
+ `SMALLINT` [`SIGNED` \$1 `UNSIGNED`]
+ `MEDIUMINT` [`SIGNED` \$1 `UNSIGNED`]
+ `INT` [`SIGNED` \$1 `UNSIGNED`]
+ `BIGINT` [`SIGNED` \$1 `UNSIGNED`]
+ `FLOAT`
+ `DOUBLE`
+ `VARCHAR`, `CHAR`, `TEXT`, `ENUM`
+ `VARBINARY`, `BINARY`, `BLOB`
+ `DATE`, `TIME`, `DATETIME`, `TIMESTAMP`
+ `DECIMAL`
+ `JSON`
+ `BIT`, `BIT(N)` 

RDS 数据 API 支持以下 Aurora PostgreSQL 标量类型：
+ `BOOL`
+ `BYTEA`
+ `DATE`
+ `CIDR`
+ `DECIMAL`, `NUMERIC`
+ `ENUM`
+ `FLOAT8`, `DOUBLE PRECISION`
+ `INET`
+ `INT`, `INT4`, `SERIAL`
+ `INT2`, `SMALLINT`, `SMALLSERIAL`
+ `INT8`, `BIGINT`, `BIGSERIAL`
+ `JSONB`, `JSON`
+ `REAL`, `FLOAT`
+ `TEXT`, `CHAR(N)`, `VARCHAR`, `NAME`
+ `TIME`
+ `TIMESTAMP`
+ `UUID`
+ `VECTOR`

RDS 数据 API 支持以下 Aurora PostgreSQL 数组类型：
+ `BOOL[]`, `BIT[]`
+ `DATE[]`
+ `DECIMAL[]`, `NUMERIC[]`
+ `FLOAT8[]`, `DOUBLE PRECISION[]`
+ `INT[]`, `INT4[]`
+ `INT2[]`
+ `INT8[]`, `BIGINT[]`
+ `JSON[]`
+ `REAL[]`, `FLOAT[]`
+ `TEXT[]`, `CHAR(N)[]`, `VARCHAR[]`, `NAME[]`
+ `TIME[]`
+ `TIMESTAMP[]`
+ `UUID[]`

您可以在对 `ExecuteStatement` 和 `BatchExecuteStatement` 的 Data API 调用中使用参数，或在运行 AWS CLI 命令 `execute-statement` 和 `batch-execute-statement` 时使用。要使用参数，请在 `SqlParameter` 数据类型中指定名称/值对。您可以使用 `Field` 数据类型指定值。下表将 Java 数据库连接 (JDBC) 数据类型映射到您在 Data API 调用中指定的数据类型。


****  

|  JDBC 数据类型  |  Data API 数据类型  | 
| --- | --- | 
|  `INTEGER, TINYINT, SMALLINT, BIGINT`  |  `LONG` – 、 或 `STRING`  | 
|  `FLOAT, REAL, DOUBLE`  |  `DOUBLE`  | 
|  `DECIMAL`  |  `STRING`  | 
|  `BOOLEAN, BIT`  |  `BOOLEAN`  | 
|  `BLOB, BINARY, LONGVARBINARY, VARBINARY`  |  `BLOB`  | 
|  `CLOB`  |  `STRING`  | 
|  其他类型（包括与日期和时间有关的类型）  |  `STRING`  | 

**注意**  
 您可以在 Data API 调用中为数据库返回的 `LONG` 值指定 `LONG` 或 `STRING` 数据类型。建议您这样操作，以避免在使用 JavaScript 时发生超大数字失去精准性的情况。

某些类型（例如 `DECIMAL` 和 `TIME`）需要提示，以便数据 API 将 `String` 值作为正确的类型传递给数据库。要使用提示，`typeHint` 数据类型中需要包含 `SqlParameter` 的值。`typeHint` 的可能值如下所示：
+ `DATE` – 相应的 `String` 参数值作为 `DATE` 类型的对象发送到数据库。接受的格式为 `YYYY-MM-DD`。
+ `DECIMAL` – 相应的 `String` 参数值作为 `DECIMAL` 类型的对象发送到数据库。
+ `JSON` – 相应的 `String` 参数值作为 `JSON` 类型的对象发送到数据库。
+ `TIME` – 相应的 `String` 参数值作为 `TIME` 类型的对象发送到数据库。接受的格式为 `HH:MM:SS[.FFF]`。
+ `TIMESTAMP` – 相应的 `String` 参数值作为 `TIMESTAMP` 类型的对象发送到数据库。接受的格式为 `YYYY-MM-DD HH:MM:SS[.FFF]`。
+  `UUID` – 相应的 `String` 参数值作为 `UUID` 类型的对象发送到数据库。
**注意**  
目前，数据 API 不支持通用唯一标识符（UUID）数组。

**注意**  
 对于 Amazon Aurora PostgreSQL，数据 API 始终以 UTC 时区返回 Aurora PostgreSQL 数据类型 `TIMESTAMPTZ`。