创建数据对比任务
用于创建一个新的数据对比任务,并指定源端、目标端以及需要对比的库表范围。
请求地址:/openapi/v1/comparedata/create
请求方法:POST
调用前准备
sourceDsId和targetDsId可通过 获取数据源列表 返回结果中的data[].datasourceId获取。- 如果数据源还未创建,可先调用 创建数据源,再使用响应中的
data.datasourceId。 databaseName、targetDatabase、tableName、targetTable需要使用源端和目标端实例中的真实库名、表名。
请求参数
| 参数 | 类型 | 是否必填 | 说明 | 示例 |
|---|---|---|---|---|
| name | String | 是 | 任务名称。建议使用能体现业务和对比范围的名称,便于后续查询和区分。 | compare-docx-proof-20260508163538 |
| sourceDsId | String | 是 | 源端数据源 ID,即被作为基准的一侧数据源。可从 获取数据源列表 的 data[].datasourceId 获取。 | ds-ct192k3jlj4f |
| targetDsId | String | 是 | 目标端数据源 ID,即与源端进行对比的另一侧数据源。可从 获取数据源列表 的 data[].datasourceId 获取。 | ds-d37s953l33d3 |
| taskMode | String | 是 | 对比类型。当前示例值为 FULL,表示全量对比。 | FULL |
| objectConfig | JSON | 是 | 需要对比的对象范围配置。通过 all、databaseList、schemaList、tableList、columnList 组合指定实例、库、Schema、表和列映射范围。 | 见下方示例 |
objectConfig 字段说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| all | Boolean | 是否直接选取整个实例下的全部对象。为 true 时,可不再逐个指定库表;为 false 时,需要通过 databaseList 指定要对比的库。 | false |
| allDatabase | Boolean | 是否选取全部数据库。通常与 all 保持一致;按库表或列映射精确配置时,设置为 false。 | false |
| databaseList | Array | 需要对比的库列表。多个库时按 JSON 数组传入多个对象。 | [{...}] |
| migrateTrigger | Boolean | 是否包含触发器对象。数据对比任务通常设置为 false。 | false |
| migrateEvent | Boolean | 是否包含事件对象。数据对比任务通常设置为 false。 | false |
databaseList 字段说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| objectType | String | 对象类型。库对象填写 database。 | database |
| databaseName | String | 源端数据库名称。需与 sourceDsId 对应实例中的实际库名一致。 | 9zdbtest2 |
| targetDatabase | String | 目标端数据库名称。需与 targetDsId 对应实例中的实际库名一致。 | 9zdbtest3 |
| targetSchema | String | 目标端 Schema 名称。仅目标端为三层结构数据源时需要。 | public |
| all | Boolean | 是否对比该库下的全部表。为 true 时,表示整库下的表都参与对比;为 false 时,需要传入 tableList。 | true |
| tableList | Array | 二层结构数据源中需要对比的表列表。多个表时按 JSON 数组传入多个对象。 | [{...},{...}] |
| schemaList | Array | 三层结构数据源中需要对比的 Schema 列表。源端为 PostgreSQL、SQL Server 等三层结构数据源时使用。 | [{...}] |
schemaList 字段说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| objectType | String | 对象类型。Schema 对象填写 schema。 | schema |
| schemaName | String | 源端 Schema 名称。 | public |
| targetSchema | String | 目标端 Schema 名称。 | public |
| targetDatabase | String | 目标端数据库名称。目标端为二层结构数据源时可在 Schema 层指定。 | test_db |
| all | Boolean | 是否对比该 Schema 下的全部表。为 false 时,需要传入 tableList。 | false |
| tableList | Array | 需要对比的表列表。 | [{...}] |
tableList 字段说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| databaseName | String | 源端数据库名称。跨层级映射或需要显式指定库名时填写。 | 9zdbtest2 |
| targetDatabase | String | 目标端数据库名称。跨层级映射或需要显式指定目标库名时填写。 | 9zdbtest3 |
| schemaName | String | 源端 Schema 名称。源端为三层结构数据源时填写。 | public |
| targetSchema | String | 目标端 Schema 名称。目标端为三层结构数据源时填写。 | public |
| tableName | String | 源端表名称。需与源端库中的实际表名一致。 | sbtest1 |
| targetTable | String | 目标端表名称。需与目标端库中的实际表名一致。 | sbtest1 |
| sourceKeyColumns | String | 源端用于定位对比记录的主键或唯一键列。 | id |
| columnList | Array | 源端和目标端的列映射列表。源端和目标端列名不一致,或需要显式指定列类型时填写。 | [{...}] |
columnList 字段说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| objectType | String | 对象类型。列对象填写 column。 | column |
| columnName | String | 源端列名。 | id |
| targetColumn | String | 目标端列名。 | id_t |
| columnType | String | 源端列类型。跨异构数据源对比或需要显式标注类型时填写。 | NUMBER |
| targetColumnType | String | 目标端列类型。跨异构数据源对比或需要显式标注类型时填写;同构数据源可为空字符串。 | numeric |
如何使用返回值
成功响应中的 data 为本次创建出的 taskId。后续调用 启动数据对比任务、查询数据对比主任务详情、停止数据对比任务 和 删除数据对比任务 时,都需要传入该值。
请求示例
{
"name": "compare-docx-proof-20260508163538",
"objectConfig": {
"all": false,
"databaseList": [
{
"databaseName": "9zdbtest2",
"targetDatabase": "9zdbtest3",
"all": true,
"tableList": [
{
"tableName": "sbtest1",
"targetTable": "sbtest1"
},
{
"tableName": "sbtest2",
"targetTable": "sbtest2"
}
]
}
]
},
"sourceDsId": "ds-ct192k3jlj4f",
"targetDsId": "ds-d37s953l33d3",
"taskMode": "FULL"
}
包含列映射的 objectConfig 示例
如果源端和目标端表名或列名不一致,可以在 tableList 中通过 targetTable 指定目标表,并通过 columnList 指定源端列和目标端列的映射关系。
二层结构数据源到二层结构数据源(例如 MySQL 到 MySQL):
{
"all": false,
"allDatabase": false,
"databaseList": [
{
"objectType": "database",
"databaseName": "wzy_test1",
"targetDatabase": "wzy_test1",
"all": false,
"tableList": [
{
"databaseName": "wzy_test1",
"tableName": "test_ys1",
"targetTable": "test_ys2",
"sourceKeyColumns": "c_int_t",
"columnList": [
{
"objectType": "column",
"columnName": "c_bit_t1",
"targetColumn": "c_bit_t2",
"targetColumnType": ""
},
{
"objectType": "column",
"columnName": "c_int_t",
"targetColumn": "c_int_t",
"targetColumnType": "int"
}
]
}
]
}
],
"migrateTrigger": false,
"migrateEvent": false
}
三层结构数据源到三层结构数据源(例如 PostgreSQL 到 PostgreSQL):
{
"all": false,
"allDatabase": false,
"databaseList": [
{
"objectType": "database",
"databaseName": "postgres",
"targetDatabase": "postgres",
"all": false,
"schemaList": [
{
"objectType": "schema",
"schemaName": "public",
"targetSchema": "public",
"all": false,
"tableList": [
{
"databaseName": "postgres",
"schemaName": "public",
"targetSchema": "public",
"tableName": "activities",
"targetTable": "activities",
"sourceKeyColumns": "id",
"columnList": [
{
"objectType": "column",
"columnName": "id",
"targetColumn": "id",
"columnType": "integer",
"targetColumnType": "integer"
},
{
"objectType": "column",
"columnName": "activity_name",
"targetColumn": "activity_name",
"columnType": "character varying",
"targetColumnType": "character varying"
}
]
}
],
"otherStoredObjectList": []
}
]
}
],
"migrateTrigger": false,
"migrateEvent": false
}
二层结构数据源到三层结构数据源(例如 Oracle 到 PostgreSQL):
{
"all": false,
"allDatabase": false,
"databaseList": [
{
"objectType": "database",
"databaseName": "NINEDATA",
"targetDatabase": "postgres",
"targetSchema": "public",
"all": false,
"tableList": [
{
"databaseName": "NINEDATA",
"targetDatabase": "postgres",
"targetSchema": "public",
"tableName": "EMPLOYEES",
"targetTable": "activities",
"sourceKeyColumns": "ID",
"columnList": [
{
"objectType": "column",
"columnName": "ID",
"targetColumn": "id",
"columnType": "NUMBER",
"targetColumnType": "integer"
},
{
"objectType": "column",
"columnName": "NAME",
"targetColumn": "activity_name",
"columnType": "VARCHAR2",
"targetColumnType": "character varying"
}
]
}
]
}
],
"migrateTrigger": false,
"migrateEvent": false
}
三层结构数据源到二层结构数据源:
{
"all": false,
"allDatabase": false,
"databaseList": [
{
"objectType": "database",
"databaseName": "postgres",
"targetDatabase": "9zdbtest2",
"all": false,
"schemaList": [
{
"objectType": "schema",
"schemaName": "public",
"targetDatabase": "9zdbtest2",
"all": false,
"tableList": [
{
"databaseName": "postgres",
"schemaName": "public",
"targetDatabase": "9zdbtest2",
"tableName": "activities",
"targetTable": "sbtest1",
"sourceKeyColumns": "id",
"columnList": [
{
"objectType": "column",
"columnName": "id",
"targetColumn": "id",
"columnType": "integer",
"targetColumnType": "int"
},
{
"objectType": "column",
"columnName": "activity_name",
"targetColumn": "c",
"columnType": "character varying",
"targetColumnType": "char"
}
]
}
],
"otherStoredObjectList": []
}
]
}
],
"migrateTrigger": false,
"migrateEvent": false
}
返回参数
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| success | Boolean | 请求是否成功。 | true |
| requestId | String | 请求 ID,可用于问题排查和链路追踪。 | Em1u9SHH-kqqraVGnllse6BZdmnh5DQM |
| data | String | 数据对比任务 ID,即后续接口使用的 taskId。 | cd-tepmjmnj6o |
调用成功示例
{
"success": true,
"requestId": "Em1u9SHH-kqqraVGnllse6BZdmnh5DQM",
"data": "cd-tepmjmnj6o"
}