从MySQL到金蝶云星空:高效数据迁移技术解析

  • 轻易云集成顾问-贺强

MySQL数据集成到金蝶云星空:W物料分配-广东天一-机加部分

在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将MySQL数据库中的数据高效、安全地集成到金蝶云星空系统。这个过程涉及一系列复杂的操作,包括API调用、分页处理以及异常重试机制等。同时,通过该案例会展示一些关键技术特性,如高吞吐量的数据写入能力、实时监控和日志记录等。

背景与需求分析

广东天一公司需要将其多年来积累的大量物料分配信息从现有的MySQL数据库迁移至金蝶云星空,以实现更好的资源管理和优化配置。本次任务主要集中于“机加部分”的物料分配(方案名称:W物料分配-广东天一-机加部分)。

解决方案概述

通过使用轻易云数据集成平台,结合MySQL提供的数据获取API(select)与金蝶云星空的数据写入API(allocate),我们设计了一个高效且稳健的集成流程。以下是本解决方案的一些核心要点:

  1. 高吞吐量的数据写入
    • 实现大量数据快速传输,从而确保业务上的时效性。
  2. 实时监控和告警系统
    • 集中的监控接口能够实时跟踪每个子任务的状态,并对异常情况及时发出告警。
  3. 自定义数据转换逻辑
    • 在ETL过程中,通过定制化转换功能适应不同业务需求及数据结构差异。
  4. 批量操作与分页控制
    • 处理大规模数据时,采用可靠的分页策略以避免单次调用超负荷,同时满足限流要求。

接下来的内容将详细介绍各个步骤的技术实现,包括MySQL select接口的具体使用方法、如何设置分页控制,以及对接过程中可能遇到的问题及其解决办法。

此案例不仅展示了实际运作方案,还为您提供了一套可复用、高效率的方法论,用于其他类似场景的数据集成项目中。 金蝶与MES系统接口开发配置

调用MySQL接口select获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用MySQL接口select,获取并加工数据,以实现高效的数据集成。

元数据配置解析

在本案例中,我们使用的元数据配置如下:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "id": "物料编号",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {
          "field": "limit",
          "label": "limit",
          "type": "string",
          "value": "2000"
        },
        {
          "field": "offset",
          "label": "offset",
          "type": "string"
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      "label": "main_sql",
      "type": "string",
      "describe": "111",
      "value": "
        select part_no as 物料编号,
               '1' as is_sucess,
               bom_id as sourceid
        from oms_order_bom 
        where company_code='GDTY' and is_success !='1'
        limit :limit offset :offset
      "
    }
  ],
  “autoFillResponse”: true,
  “omissionRemedy”: {
    “crontab”: “1 1 1 1 1”,
    “takeOverRequest”: []
  }
}

数据请求与清洗

首先,我们需要理解如何配置和使用API接口来请求数据。在上述元数据配置中,api字段指定了我们要使用的操作类型为select,而effect字段表明这是一个查询操作。

请求参数设置

request字段中,我们定义了请求参数:

  • main_params: 包含两个子参数:
    • limit: 限制返回记录的数量,默认值为2000。
    • offset: 用于分页查询,未设置默认值。

这些参数将在SQL查询中作为占位符被替换。

SQL查询语句

otherRequest字段中,我们定义了实际执行的SQL查询语句:

select part_no as 物料编号,
       '1' as is_sucess,
       bom_id as sourceid
from oms_order_bom 
where company_code='GDTY' and is_success !='1'
limit :limit offset :offset

该SQL语句从表oms_order_bom中选择符合条件的数据,并将结果字段映射为目标系统所需的格式。

数据转换与写入

虽然本文主要聚焦于数据请求与清洗,但简要提及一下后续步骤:在获取到原始数据后,平台会根据预定义的规则进行数据转换,并最终写入目标系统。这一过程同样是通过可视化界面和自动化流程来实现的。

自动填充与补偿机制

为了确保数据完整性和一致性,平台提供了自动填充响应功能(autoFillResponse: true),以及遗漏补偿机制(omissionRemedy)。例如,通过设置定时任务(crontab),可以定期检查并处理遗漏的数据请求。

实践案例

假设我们需要从MySQL数据库中获取物料分配相关的数据,并将其导入到目标系统。以下是具体步骤:

  1. 配置API接口:按照上述元数据配置,在轻易云平台上创建一个新的API接口。
  2. 设置请求参数:根据业务需求调整请求参数,如修改limit和添加分页逻辑。
  3. 执行SQL查询:通过平台执行配置好的SQL查询,获取原始数据。
  4. 自动化处理:利用平台的自动填充和补偿机制,确保所有数据都被正确处理和传输。

通过以上步骤,我们可以高效地调用MySQL接口获取并加工所需的数据,为后续的数据转换与写入奠定基础。 金蝶与CRM系统接口开发配置

利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台能够接收的格式。本文将重点探讨如何通过轻易云数据集成平台,将源数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标平台。

元数据配置解析

在进行数据转换和写入之前,首先需要理解元数据配置。以下是针对金蝶云星空API接口allocate的元数据配置:

{
    "api": "allocate",
    "effect": "EXECUTE",
    "method": "POST",
    "number": "number",
    "id": "id",
    "name": "name",
    "idCheck": true,
    "request": [
        {
            "field": "FormId",
            "label": "业务对象表单Id",
            "type": "string",
            "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder",
            "value": "BD_MATERIAL"
        },
        {
            "field": "TOrgIds",
            "label": "目标组织内码",
            "type": "string",
            "describe": "需要分配的目标组织内码,字符串类型,格式:123,3123,5123,5123",
            "value": "802345"
        },
        {
            "field": "PkIds",
            "label": "需要分配的物料内码",
            "type": "string",
            "describe": 
"被分配的物料内码集合,字符串类型,格式:123,312,4123",
"value":"_mongoQuery 9f845ce5-cf31-3ae6-ab67-21f2d881489b findField=content.FMasterId where={\"content.FNumber\":{\"$eq\":\"{{物料编号}}\"}}"
        },
        {
            "field": 
"IsAutoSubmitAndAudit","label":"提交审核","type":"bool","value":"true"}
    ],

"enforcedAssociation":
true
}

数据请求与清洗

在ETL流程中,首先需要从源系统中提取(Extract)相关的数据。假设我们从一个MongoDB数据库中提取物料信息,通过查询条件获取特定物料编号对应的FMasterId。这个过程可以通过轻易云的数据请求功能实现:

{
  "_mongoQuery 9f845ce5-cf31-3ae6-ab67-21f2d881489b findField=content.FMasterId where={\"content.FNumber\":{\"$eq\":\"{{物料编号}}\"}}"
}

数据转换

接下来是数据转换(Transform)。根据元数据配置,需要将提取到的数据按照金蝶云星空API接口要求的字段进行映射和转换。以下是具体字段的映射关系:

  1. FormId: 固定值 "BD_MATERIAL" 表示业务对象表单ID。
  2. TOrgIds: 固定值 "802345" 表示目标组织内码。
  3. PkIds: 从MongoDB查询结果中获取到的FMasterId
  4. IsAutoSubmitAndAudit: 固定值 true 表示自动提交审核。

通过轻易云的平台,可以使用可视化界面或脚本对这些字段进行处理和映射。

数据写入

最后一步是将转换后的数据加载(Load)到目标系统,即通过调用金蝶云星空API接口,将处理好的数据写入系统。以下是一个典型的HTTP POST请求示例:


{

![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案