
# 批量数据库对象选择 - BatchSetObjects
#### 功能介绍
迁移之前，选择需要迁移的数据库或者表。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DRS&api=BatchSetObjects)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 接口约束
- 仅实时迁移、实时同步、校验任务支持对象选择。
- 任务创建成功之后，任务状态为CONFIGURATION，并且与源库和目标库测试连接通过、修改任务接口调用成功后才能调用。
- 为保证接口调用性能，建议批量调用数量不超过10个。
 
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-drs/drs_api_0035.html)。
#### URI
PUT /v3/{project_id}/jobs/batch-select-objects
表1路径参数 
| **参数**     | **是否必选** | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| project_id | 是        | String   | **参数解释：** 租户在某一Region下的Project ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-drs/drs_api_0106.html)。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| Content-Type | 是    | String | **参数解释**： 发送的实体的MIME类型。推荐用户默认使用application/json，如果API是对象、镜像上传等接口，媒体类型可按照流类型的不同进行确定。 **约束限制：** 不涉及。 **取值范围：** application/json **默认取值：** application/json                                                                                                                                                                                                                                                                |
| X-Auth-Token | 是    | String | **参数解释**： 从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值，该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                  |
| X-Language   | 否    | String | **参数解释**： 请求语言类型。 **约束限制：** 不涉及。 **取值范围：** - **en-us**：英语  - **zh-cn**：中文   **默认取** **值：** **en-us** |
   
表3请求Body参数 
| **参数** | **是否必选** | **参数类型**         | **描述**                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| jobs   | 是        | Array of objects | **参数解释：** 批量更新数据库对象选择的任务信息列表，每个元素包含一个任务的对象选择配置。 详情请参见[表4]。 **约束限制**： 建议批量调用数量不超过10个。 |
   
 表4jobs字段数据结构说明 
| **参数**        | **是否必选** | **参数类型**         | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| job_id        | 是        | String           | **参数解释：** 任务ID，用于唯一标识一个数据复制任务，在查询、修改、删除等操作中作为任务的识别凭证。 **约束限制**： 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| selected      | 否        | Boolean          | **参数解释：** 是否进行对象选择，决定是自定义选择迁移对象还是迁移全部对象。 **约束限制**： 不涉及。 **取值范围：** - **true**：自定义迁移对象，需要通过job字段指定具体迁移对象   - **false**：全部迁移，迁移源库所有对象    **默认取值：** false |
| sync_database | 否        | Boolean          | **参数解释：** 是否库级同步，指定同步任务是否以库为粒度进行对象选择。 **约束限制**： 不涉及。 **取值范围：** - **true**：库级同步。   - **false**：非库级同步。    **默认取值：** 不涉及。                             |
| job           | 否        | Array of objects | **参数解释：** 数据对象选择信息，包含需要迁移的数据库、表、视图等对象的详细配置。 详情请参见[表5]。 **约束限制**： selected为true时必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表5job字段数据结构说明 
| **参数**            | **是否必选** | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| id                | 否        | String   | **参数解释：** 数据库对象的标识，具体含义取决于object_type的取值。object_type为**database** 时，为库名；object_type为**table** 或者**view**时，字段值参考示例。 **约束限制**： 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| parent_id         | 否        | String   | **参数解释：** 数据库对象的父级标识，object_type为**table或view**时需要填写，为库名。 **约束限制**： object_type为table或view时必填。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| object_type       | 否        | String   | **参数解释：** 数据库对象的类型，用于标识迁移或同步对象是数据库、表、模式还是视图。 **约束限制**： 不涉及。 **取值范围：** - **database**：数据库。  - **table**：表。  - **schema**：模式。  - **view**：视图。   **默认取值：** 不涉及。                                                                                                                      |
| object_name       | 否        | String   | **参数解释：** 数据库对象名称，可以是库名、表名或视图名。 **约束限制**： 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| select            | 否        | String   | **参数解释：** 是否选中该数据库对象进行迁移，用于控制对象级别的迁移选择。 **约束限制**： 不涉及。 **取值范围：** - **true**：选中，该数据库对象会进行迁移。   - **false**：不选中，该数据库对象不会迁移。   - **partial**：部分选择，迁移库下面的部分表。    **默认取值：** false |
| object_alias_name | 否        | String   | **参数解释：** 别名，即映射后的新名称。 **约束限制**： 仅支持同步任务使用。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
#### 响应参数
**状态码：202**
表6响应Body参数 
| **参数**     | **参数类型**         | **描述**                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| all_counts | Long             | **参数解释：** 批量对象选择操作的任务总数，表示本次请求中处理的对象选择任务总数量。 **约束限制**： 不涉及。 **取值范围：** 不涉及。 |
| results    | Array of objects | **参数解释：** 批量对象选择操作的响应列表。 详情请参见[表7]。                                                                                                                                                                                        |
   
 表7results字段数据结构说明 
| **参数**     | **参数类型** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| job_id     | String   | **参数解释：** 任务ID，用于唯一标识一个数据复制任务，在查询、修改、删除等操作中作为任务的识别凭证。 **约束限制**： 不涉及。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                             |
| status     | Boolean  | **参数解释：** 选择对象任务是否成功。 **约束限制**： 不涉及。 **取值范围：** - **true**：选择对象任务成功。  - **false**：选择对象任务失败。   |
| error_code | String   | **参数解释：** 错误码，当任务报错时返回的错误代码。 **约束限制**： 不涉及。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                   |
| error_msg  | String   | **参数解释：** 错误详细信息，当任务执行失败时返回的具体错误描述。 **约束限制**： 不涉及。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                          |
   
#### 请求示例
- 指定部分库、表对象进行迁移
  ```
  https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-select-objects
  {
    "jobs" : [ {
      "job" : [ {
        "id" : "fastunit",
        "parent_id" : null,
        "object_name" : "fastunit",
        "object_type" : "database",
        "select" : "partial",
        "object_alias_name" : null
      }, {
        "id" : "fastunit-*-*-coll",
        "parent_id" : "fastunit",
        "object_name" : "coll",
        "object_type" : "table",
        "select" : "true",
        "object_alias_name" : null
      }, {
        "id" : "ycy1",
        "parent_id" : null,
        "object_name" : "ycy1",
        "object_type" : "database",
        "select" : "partial",
        "object_alias_name" : null
      }, {
        "id" : "ycy1-*-*-coll",
        "parent_id" : "ycy1",
        "object_name" : "coll",
        "object_type" : "table",
        "select" : "true",
        "object_alias_name" : null
      }, {
        "id" : "ycy1-*-*-collcount",
        "parent_id" : "ycy1",
        "object_name" : "collcount",
        "object_type" : "table",
        "select" : "true",
        "object_alias_name" : null
      } ],
      "job_id" : "57fd2692-0ebe-4714-9b59-fe7aa65djb15",
      "selected" : true
    } ]
  }
  ```
  
- 选择全部对象进行迁移
  ```
  https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-select-objects
  {
    "jobs" : [ {
      "job" : [ ],
      "job_id" : "e59f5eef-2bcc-4461-b9ac-10aded44jb15",
      "selected" : false
    } ]
  }
  ```
  
 
#### 响应示例
**状态码：202**
Accepted
```
{
"all_counts": 1,
"results": [{
"job_id": "4d700f6f-9a17-47e0-a7d6-1bc2155jb101",
"status": true
}]
}
```
#### 状态码
| **状态码** | **描述**      |
|:---|:---|
| 202     | Accepted    |
| 400     | Bad Request |
   
其他状态请参见[状态码](https://support.huaweicloud.com/api-drs/drs_api_0108.html)。
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-drs/drs_05_0004.html)。
