跳到主要内容

创建数据对比任务

用于创建一个新的数据对比任务,并指定源端、目标端以及需要对比的库表范围。

请求地址:/openapi/v1/comparedata/create

请求方法:POST

调用前准备

  • sourceDsIdtargetDsId 可通过 获取数据源列表 返回结果中的 data[].datasourceId 获取。
  • 如果数据源还未创建,可先调用 创建数据源,再使用响应中的 data.datasourceId
  • databaseNametargetDatabasetableNametargetTable 需要使用源端和目标端实例中的真实库名、表名。

请求参数

参数类型是否必填说明示例
nameString任务名称。建议使用能体现业务和对比范围的名称,便于后续查询和区分。compare-docx-proof-20260508163538
sourceDsIdString源端数据源 ID,即被作为基准的一侧数据源。可从 获取数据源列表data[].datasourceId 获取。ds-ct192k3jlj4f
targetDsIdString目标端数据源 ID,即与源端进行对比的另一侧数据源。可从 获取数据源列表data[].datasourceId 获取。ds-d37s953l33d3
taskModeString对比类型。当前示例值为 FULL,表示全量对比。FULL
objectConfigJSON需要对比的对象范围配置。通过 alldatabaseListschemaListtableListcolumnList 组合指定实例、库、Schema、表和列映射范围。见下方示例

objectConfig 字段说明

参数类型说明示例
allBoolean是否直接选取整个实例下的全部对象。为 true 时,可不再逐个指定库表;为 false 时,需要通过 databaseList 指定要对比的库。false
allDatabaseBoolean是否选取全部数据库。通常与 all 保持一致;按库表或列映射精确配置时,设置为 falsefalse
databaseListArray需要对比的库列表。多个库时按 JSON 数组传入多个对象。[{...}]
migrateTriggerBoolean是否包含触发器对象。数据对比任务通常设置为 falsefalse
migrateEventBoolean是否包含事件对象。数据对比任务通常设置为 falsefalse

databaseList 字段说明

参数类型说明示例
objectTypeString对象类型。库对象填写 databasedatabase
databaseNameString源端数据库名称。需与 sourceDsId 对应实例中的实际库名一致。9zdbtest2
targetDatabaseString目标端数据库名称。需与 targetDsId 对应实例中的实际库名一致。9zdbtest3
targetSchemaString目标端 Schema 名称。仅目标端为三层结构数据源时需要。public
allBoolean是否对比该库下的全部表。为 true 时,表示整库下的表都参与对比;为 false 时,需要传入 tableListtrue
tableListArray二层结构数据源中需要对比的表列表。多个表时按 JSON 数组传入多个对象。[{...},{...}]
schemaListArray三层结构数据源中需要对比的 Schema 列表。源端为 PostgreSQL、SQL Server 等三层结构数据源时使用。[{...}]

schemaList 字段说明

参数类型说明示例
objectTypeString对象类型。Schema 对象填写 schemaschema
schemaNameString源端 Schema 名称。public
targetSchemaString目标端 Schema 名称。public
targetDatabaseString目标端数据库名称。目标端为二层结构数据源时可在 Schema 层指定。test_db
allBoolean是否对比该 Schema 下的全部表。为 false 时,需要传入 tableListfalse
tableListArray需要对比的表列表。[{...}]

tableList 字段说明

参数类型说明示例
databaseNameString源端数据库名称。跨层级映射或需要显式指定库名时填写。9zdbtest2
targetDatabaseString目标端数据库名称。跨层级映射或需要显式指定目标库名时填写。9zdbtest3
schemaNameString源端 Schema 名称。源端为三层结构数据源时填写。public
targetSchemaString目标端 Schema 名称。目标端为三层结构数据源时填写。public
tableNameString源端表名称。需与源端库中的实际表名一致。sbtest1
targetTableString目标端表名称。需与目标端库中的实际表名一致。sbtest1
sourceKeyColumnsString源端用于定位对比记录的主键或唯一键列。id
columnListArray源端和目标端的列映射列表。源端和目标端列名不一致,或需要显式指定列类型时填写。[{...}]

columnList 字段说明

参数类型说明示例
objectTypeString对象类型。列对象填写 columncolumn
columnNameString源端列名。id
targetColumnString目标端列名。id_t
columnTypeString源端列类型。跨异构数据源对比或需要显式标注类型时填写。NUMBER
targetColumnTypeString目标端列类型。跨异构数据源对比或需要显式标注类型时填写;同构数据源可为空字符串。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
}

返回参数

参数类型说明示例
successBoolean请求是否成功。true
requestIdString请求 ID,可用于问题排查和链路追踪。Em1u9SHH-kqqraVGnllse6BZdmnh5DQM
dataString数据对比任务 ID,即后续接口使用的 taskIdcd-tepmjmnj6o

调用成功示例

{
"success": true,
"requestId": "Em1u9SHH-kqqraVGnllse6BZdmnh5DQM",
"data": "cd-tepmjmnj6o"
}