

# 数据库 API
<a name="aws-glue-api-catalog-databases"></a>

数据库 API 介绍数据库数据类型，还包括用于创建、删除、定位、更新和列出数据库的 API。

## 数据类型
<a name="aws-glue-api-catalog-databases-objects"></a>
+ [Database 结构](#aws-glue-api-catalog-databases-Database)
+ [DatabaseInput 结构](#aws-glue-api-catalog-databases-DatabaseInput)
+ [PrincipalPermissions 结构](#aws-glue-api-catalog-databases-PrincipalPermissions)
+ [DataLakePrincipal 结构](#aws-glue-api-catalog-databases-DataLakePrincipal)
+ [DatabaseIdentifier 结构](#aws-glue-api-catalog-databases-DatabaseIdentifier)
+ [联合数据库结构](#aws-glue-api-catalog-databases-FederatedDatabase)

## Database 结构
<a name="aws-glue-api-catalog-databases-Database"></a>

`Database` 对象表示可能驻留在 Hive 元存储或 RDBMS 中的表的逻辑分组。

**字段**
+ `Name` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库的名称。为了确保 Hive 兼容性，它在存储时被转换为小写。
+ `Description` – 描述字符串，长度不超过 2048 个字节，与 [URI address multi-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-uri) 匹配。

  对数据库的描述。
+ `LocationUri` - 统一资源标识符 (uri)，不少于 1 个字节或超过 1024 个字节，与 [URI address multi-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-uri) 匹配。

  数据库的位置（例如，HDFS 路径）。
+ `Parameters` – 键值对的映射数组。

  每个键是一个键字符串，不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  每个值是一个 UTF-8 字符串，不超过 512000 个字节。

  这些键值对定义数据库的参数和属性。
+ `CreateTime` – 时间戳。

  在目录中创建元数据数据库的时间。
+ `CreateTableDefaultPermissions` – [PrincipalPermissions](#aws-glue-api-catalog-databases-PrincipalPermissions) 对象的数组。

  在委托人表上创建一组默认权限。由 AWS Lake Formation 使用。正常的 AWS Glue 操作过程中不使用。
+ `TargetDatabase` – 一个 [DatabaseIdentifier](#aws-glue-api-catalog-databases-DatabaseIdentifier) 对象。

  描述用于资源链接的目标数据库的 `DatabaseIdentifier` 结构。
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库所在的数据目录的 ID。
+ `FederatedDatabase` – 一个 [联合数据库](#aws-glue-api-catalog-databases-FederatedDatabase) 对象。

  一种引用 AWS Glue Data Catalog 外部实体的 `FederatedDatabase` 结构。

## DatabaseInput 结构
<a name="aws-glue-api-catalog-databases-DatabaseInput"></a>

用于创建或更新数据库的结构。

**字段**
+ `Name` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库的名称。为了确保 Hive 兼容性，它在存储时被转换为小写。
+ `Description` – 描述字符串，长度不超过 2048 个字节，与 [URI address multi-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-uri) 匹配。

  对数据库的描述。
+ `LocationUri` - 统一资源标识符 (uri)，不少于 1 个字节或超过 1024 个字节，与 [URI address multi-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-uri) 匹配。

  数据库的位置（例如，HDFS 路径）。
+ `Parameters` – 键值对的映射数组。

  每个键是一个键字符串，不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  每个值是一个 UTF-8 字符串，不超过 512000 个字节。

  这些键值对定义数据库的参数和属性。

  这些键值对定义数据库的参数和属性。
+ `CreateTableDefaultPermissions` – [PrincipalPermissions](#aws-glue-api-catalog-databases-PrincipalPermissions) 对象的数组。

  在委托人表上创建一组默认权限。由 AWS Lake Formation 使用。正常的 AWS Glue 操作过程中不使用。
+ `TargetDatabase` – 一个 [DatabaseIdentifier](#aws-glue-api-catalog-databases-DatabaseIdentifier) 对象。

  描述用于资源链接的目标数据库的 `DatabaseIdentifier` 结构。
+ `FederatedDatabase` – 一个 [联合数据库](#aws-glue-api-catalog-databases-FederatedDatabase) 对象。

  一种引用 AWS Glue Data Catalog 外部实体的 `FederatedDatabase` 结构。

## PrincipalPermissions 结构
<a name="aws-glue-api-catalog-databases-PrincipalPermissions"></a>

向委托人授予的权限。

**字段**
+ `Principal` – 一个 [DataLakePrincipal](#aws-glue-api-catalog-databases-DataLakePrincipal) 对象。

  被授予权限的委托人。
+ `Permissions` – UTF-8 字符串数组。

  向委托人授予的权限。

## DataLakePrincipal 结构
<a name="aws-glue-api-catalog-databases-DataLakePrincipal"></a>

AWS Lake Formation 委托人。

**字段**
+ `DataLakePrincipalIdentifier` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节。

  AWS Lake Formation 委托人的标识符。

## DatabaseIdentifier 结构
<a name="aws-glue-api-catalog-databases-DatabaseIdentifier"></a>

描述用于资源链接的目标数据库的结构。

**字段**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库所在的数据目录的 ID。
+ `DatabaseName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  目录数据库的名称。
+ `Region` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  目标数据库的区域。

## 联合数据库结构
<a name="aws-glue-api-catalog-databases-FederatedDatabase"></a>

指向 AWS Glue Data Catalog 外部实体的数据库。

**字段**
+ `Identifier` – UTF-8 字符串，长度不少于 1 个字节或超过 512 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  联合数据库的唯一标识符。
+ `ConnectionName` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  与外部元存储连接的名称。
+ `ConnectionType` – UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  用于访问联合数据库的连接类型，例如 JDBC、ODBC 或其他支持的连接协议。

## 操作
<a name="aws-glue-api-catalog-databases-actions"></a>
+ [CreateDatabase 操作（Python：create\$1database）](#aws-glue-api-catalog-databases-CreateDatabase)
+ [UpdateDatabase 操作（Python：update\$1database）](#aws-glue-api-catalog-databases-UpdateDatabase)
+ [DeleteDatabase 操作（Python：delete\$1database）](#aws-glue-api-catalog-databases-DeleteDatabase)
+ [GetDatabase 操作（Python：get\$1database）](#aws-glue-api-catalog-databases-GetDatabase)
+ [GetDatabases 操作（Python：get\$1databases）](#aws-glue-api-catalog-databases-GetDatabases)

## CreateDatabase 操作（Python：create\$1database）
<a name="aws-glue-api-catalog-databases-CreateDatabase"></a>

在数据目录中创建新数据库。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在其中创建数据库的数据目录的 ID。如果没有提供，则默认情况下使用 AWS 账户 ID。
+ `DatabaseInput` – *必填：*一个 [DatabaseInput](#aws-glue-api-catalog-databases-DatabaseInput) 对象。

  数据库的元数据。
+ `Tags` – 键值对的映射数组，不超过 50 对。

  每个键都是一个 UTF-8 字符串，长度不少于 1 个字节或超过 128 个字节。

  每个值是一个 UTF-8 字符串，不超过 256 个字节。

  您分配给数据库的标签。

**响应**
+ *无响应参数。*

**错误**
+ `InvalidInputException`
+ `AlreadyExistsException`
+ `ResourceNumberLimitExceededException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `GlueEncryptionException`
+ `ConcurrentModificationException`
+ `FederatedResourceAlreadyExistsException`
+ `FederationSourceException`
+ `FederationSourceRetryableException`

## UpdateDatabase 操作（Python：update\$1database）
<a name="aws-glue-api-catalog-databases-UpdateDatabase"></a>

在数据目录中更新现有数据库定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  元数据数据库所在的数据目录的 ID。如果没有提供，则默认情况下使用 AWS 账户 ID。
+ `Name` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在目录中更新的数据库的名称。对于 Hive 兼容性，它会转化为小写。
+ `DatabaseInput` – *必填：*一个 [DatabaseInput](#aws-glue-api-catalog-databases-DatabaseInput) 对象。

  一个 `DatabaseInput` 对象，在目录中指定元数据数据库的新定义。

**响应**
+ *无响应参数。*

**错误**
+ `EntityNotFoundException`
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `GlueEncryptionException`
+ `ConcurrentModificationException`
+ `FederationSourceException`
+ `FederationSourceRetryableException`
+ `AlreadyExistsException`

## DeleteDatabase 操作（Python：delete\$1database）
<a name="aws-glue-api-catalog-databases-DeleteDatabase"></a>

从数据目录中删除指定的数据库。

**注意**  
完成此操作后，您将无法再访问已删除的数据库中的这些表（以及可能属于这些表的所有表版本和分区）和用户定义函数。AWS Glue 会及时以异步方式删除这些“孤立”资源，这由服务决定。  
为了确保立即删除所有相关资源，在调用 `DeleteDatabase` 之前，请使用 `DeleteTableVersion` 或 `BatchDeleteTableVersion`、`DeletePartition` 或 `BatchDeletePartition`、`DeleteUserDefinedFunction` 和 `DeleteTable` 或 `BatchDeleteTable`，删除属于该数据库的所有资源。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库所在的数据目录的 ID。如果没有提供，则默认情况下使用 AWS 账户 ID。
+ `Name` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要删除的数据库的名称。对于 Hive 兼容性，它必须是全部小写的。

**响应**
+ *无响应参数。*

**错误**
+ `EntityNotFoundException`
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `ConcurrentModificationException`
+ `FederationSourceException`
+ `FederationSourceRetryableException`

## GetDatabase 操作（Python：get\$1database）
<a name="aws-glue-api-catalog-databases-GetDatabase"></a>

检索指定数据库的定义。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  数据库所在的数据目录的 ID。如果没有提供，则默认情况下使用 AWS 账户 ID。
+ `Name` – *必填：*UTF-8 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要检索的数据库的名称。对于 Hive 兼容性，它应该是全部小写的。

**响应**
+ `Database` – 一个 [数据库](#aws-glue-api-catalog-databases-Database) 对象。

  数据目录中指定数据库的定义。

**错误**
+ `InvalidInputException`
+ `EntityNotFoundException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `GlueEncryptionException`
+ `FederationSourceException`
+ `FederationSourceRetryableException`

## GetDatabases 操作（Python：get\$1databases）
<a name="aws-glue-api-catalog-databases-GetDatabases"></a>

检索在给定数据目录中定义的所有数据库。

**请求**
+ `CatalogId` – 目录 id 字符串，长度不少于 1 个字节或超过 255 个字节，与 [Single-line string pattern](aws-glue-api-common.md#aws-glue-api-regex-oneLine) 匹配。

  要在其中检索 `Databases` 的数据目录的 ID。如果没有提供，则默认情况下使用 AWS 账户 ID。
+ `NextToken` – UTF-8 字符串。

  延续标记 (如果这是延续调用)。
+ `MaxResults` – 数字（整数），不小于 1 或大于 100。

  要在一个响应中返回的数据库的最大数量。
+ `ResourceShareType` – UTF-8 字符串（有效值：`FOREIGN` \$1 `ALL` \$1 `FEDERATED`）。

  允许您指定要列出与您的账户共享的数据库。允许的值是 `FEDERATED`、`FOREIGN` 或 `ALL`。
  + 如果设置为 `FEDERATED`，将列出与您的账户共享的联合数据库（引用外部实体）。
  + 如果设置为 `FOREIGN`，将列出与您的账户共享的数据库。
  + 如果设置为 `ALL`，将列出与您的账户共享的数据库，以及本地账户中的数据库。
+ `AttributesToGet` – UTF-8 字符串数组。

  指定 `GetDatabases` 调用返回的数据库字段。此参数不接受空列表。请求中必须包含 `NAME`。

**响应**
+ `DatabaseList` – *必填：*[数据库](#aws-glue-api-catalog-databases-Database) 对象的数组。

  指定目录中的 `Database` 对象的列表。
+ `NextToken` – UTF-8 字符串。

  对返回的标记列表进行分页的延续令牌 (如果列表的当前片段不是最后一个，则返回)。

**错误**
+ `InvalidInputException`
+ `InternalServiceException`
+ `OperationTimeoutException`
+ `GlueEncryptionException`
+ `EntityNotFoundException`
+ `FederationSourceException`
+ `FederationSourceRetryableException`