Qeasy Cloud
Get Started

如何高效同步金蝶云星空数据至MySQL数据库

Qeasy Integration Consultant 张妍琪2864 views

案例分享:金蝶云星空数据集成到MySQL

在本案例中,我们详细探讨了如何将金蝶云星空系统中的客户数据,通过轻易云数据集成平台,批量同步至MySQL数据库的过程。目标是实现0查询金蝶客户信息并精准同步到商城的中间表,以便下游业务系统调用。整个方案强调高效、安全、实时的特点。

为确保数据处理的时效性和准确性,我们利用了金蝶云星空提供的数据获取API executeBillQuery 和 MySQL写入数据API execute,通过自动化脚本和调度机制,实现定时可靠地抓取与存储操作。此外,为应对大量数据快速写入需求和防止漏单情况发生,本次集成特别关注以下技术要点:

  1. 高吞吐量支持: 采用分批次处理模式,每次从金蝶云星空接口拉取一定数量的数据,并立即同步至MySQL。这不仅提升了整体效率,也减少了一次性大流量请求带来的风险。

  2. 分页与限流策略: 针对接口调用限制问题,通过分页方式控制每次提取的数据规模,同时设置合理的调用频率,避免触发限流机制。这种处理方式有效保障了任务持续稳定地进行。

  3. 自定义转换逻辑: 鉴于两套系统存在的数据结构差异,对提取得到的信息进行格式转换与清洗,使其符合MySQL数据库表结构要求。在这一过程中,自定义规则确保所有字段都得到正确映射和存储。

  4. 实时监控与异常处理: 为提高安全性,全程引入集中化监控及告警系统,跟踪各项指标。一旦发现异常,如网络波动导致请求失败或插入操作出错,将即时启动错误重试机制以补救,同时记录日志以供后续分析。

  5. 数据质量保证: 对每一次成功写入前后的结果进行校验,并配置多层过滤器检测潜在的问题,从而最大程度上保证最终落地的数据准确无误。

接下来我们会进一步展示具体实现步骤及代码示例,以帮助开发者更好理解这个方案并应用于实际项目中。 用友与SCM系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取客户信息,并对数据进行初步加工。

接口配置与请求参数

首先,我们需要配置元数据以调用金蝶云星空的executeBillQuery接口。以下是关键的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FCUSTID",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {"field":"FCUSTID","label":"FCUSTID","type":"string","describe":"FCUSTID","value":"FCUSTID"},
    {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"FNumber"},
    {"field":"FName","label":"名称","type":"string","describe":"名称","value":"FName"},
    {"field":"FCreateOrgId_FNumber","label":"创建组织","type":"string","describe":"创建组织","value":"FCreateOrgId.FNumber"},
    {"field":"FUseOrgId_FNumber","label":"使用组织","type":"string","describe":"使用组织","value":"FUseOrgId.FNumber"},
    {"field":"FDescription","label":"描述","type":"string","describe":"描述","value":"FDescription"},
    {"field":"FIsTrade","label":"是否交易客户","type":"string","describe":"是否交易客户","value":"FIsTrade"},
    {"field":"FINVOICETITLE","label":"发票抬头","type":"string","value":"FINVOICETITLE"},
    {"field":"FINVOICEBANKNAME","label":"开户银行","type":"string","value":"FINVOICEBANKNAME"},
    {"field":"FINVOICEBANKACCOUNT","label":"银行账号","type":"string","value":"FINVOICEBANKACCOUNT"},
    {"field": "FINVOICETEL", "label": "开票联系电话", "type": "string", "value": "FINVOICETEL"},
    {"field": "FINVOICEADDRESS", "label": "开票通讯地址", "type": "string", "value": "FINVOICEADDRESS"}
  ],
  ...
}

请求参数详解

  • api: 接口名称,这里是executeBillQuery
  • effect: 操作类型,设置为QUERY表示查询操作。
  • method: HTTP请求方法,这里使用POST
  • number, id, name: 用于标识记录的字段。
  • idCheck: 是否检查ID字段,设置为true

请求参数部分定义了我们需要从金蝶系统中获取的字段,包括客户ID、编码、名称、创建组织、使用组织等。这些字段将被映射到相应的数据表中。

其他请求参数

除了基本的请求字段,还需要配置一些其他参数以控制查询行为:

{
  ...
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", ...},
    {"field": "StartRow", "label": "开始行索引", ...},
    {"field": "TopRowCount", ...},
    {"field": "FilterString", ...},
    {"field": "FieldKeys", ...},
    {"field": "FormId", ...}
  ],
  ...
}

这些参数包括分页控制(如最大行数和开始行索引)、过滤条件(如修改日期大于上次同步时间)以及需要查询的字段集合和业务对象表单ID等。

实际调用与数据处理

在实际调用过程中,我们通过HTTP POST请求将上述参数发送到金蝶云星空系统。以下是一个示例请求体:

{
  ...
  {
    FCUSTID: '1001',
    FNumber: 'C0001',
    FName: '客户A',
    FCreateOrgId_FNumber: 'ORG001',
    FUseOrgId_FNumber: 'ORG002',
    FDescription: '重要客户',
    FIsTrade: 'true',
    FINVOICETITLE: '客户A公司',
    FINVOICEBANKNAME: '中国银行',
    FINVOICEBANKACCOUNT: '1234567890',
    FINVOICETEL: '010-12345678',
    FINVOICEADDRESS: '北京市朝阳区'
  }
}

收到响应后,我们可以对数据进行初步加工,如格式转换、字段映射等,以便后续的数据转换与写入阶段处理。

数据清洗与转换

在获取到原始数据后,可能需要进行一些清洗和转换操作。例如,将日期格式统一,去除无效字符等。这一步骤确保了数据的一致性和完整性,为后续的数据写入打下基础。

通过上述步骤,我们成功地调用了金蝶云星空的接口并获取了所需的数据。接下来,可以根据业务需求进一步处理这些数据,实现不同系统间的数据无缝对接。 轻易云数据集成平台金蝶集成接口配置

使用轻易云数据集成平台进行ETL转换并写入MySQLAPI接口的技术案例

在使用轻易云数据集成平台进行数据集成时,生命周期的第二步是将已经集成的源平台数据进行ETL转换,转为目标平台 MySQLAPI接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何利用元数据配置完成这一过程。

元数据配置解析

元数据配置是实现ETL转换和写入的关键。以下是一个具体的元数据配置示例:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "SQL",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "主参数",
      "type": "object",
      "describe": "对应主语句内的动态参数",
      "children": [
        {
          "field": "customer_code",
          "label": "客户编码",
          "type": "string",
          "describe": "店铺名称",
          "value": "{FNumber}"
        },
        {
          "field": "customer_name",
          "label": "姓名",
          "type": "string",
          "describe": "部门",
          "value": "{FName}"
        },
        {
          "field": "create_time",
          "label": "创建时间",
          "type": "datetime",
          "value": "_function now()"
        }
      ]
    }
  ],
  ...
}

数据请求与清洗

在这个阶段,我们从源系统(如金蝶)中获取客户信息,并将其同步到商城中间表。首先,我们需要定义要提取的数据字段,这些字段包括客户编码(FNumber)、客户姓名(FName)和创建时间。

{
  ...
  {
    ...
    {
      field: 'customer_code',
      label: '客户编码',
      type: 'string',
      describe: '店铺名称',
      value: '{FNumber}'
    },
    {
      field: 'customer_name',
      label: '姓名',
      type: 'string',
      describe: '部门',
      value: '{FName}'
    },
    {
      field: 'create_time',
      label: '创建时间',
      type: 'datetime',
      value: '_function now()'
    }
    ...
  }
}

这些字段将被映射到目标平台所需的格式。在这个过程中,_function now() 用于生成当前时间戳,确保每条记录都有准确的创建时间。

数据转换与写入

在完成数据请求与清洗后,下一步是将清洗后的数据转换为目标平台 MySQLAPI 接口能够接收的格式,并写入数据库。这里我们使用 SQL 插入语句来完成这一任务:

{
  ...
  {
    field: 'main_sql',
    label: '主语句',
    type: 'string',
    describe: 'SQL首次执行的语句,将会返回:lastInsertId',
    value: `INSERT INTO middle_client_file_erp (customer_code, customer_name, create_time) 
            VALUES (:customer_code,:customer_name,:create_time)
            ON DUPLICATE KEY UPDATE
            customer_name = VALUES(customer_name),
            create_time = VALUES(create_time)`
  }
}

这段 SQL 插入语句实现了以下功能:

  1. 插入新记录:如果客户编码不存在,则插入一条新记录。
  2. 更新现有记录:如果客户编码已存在,则更新客户姓名和创建时间。

这种方式确保了数据库中的记录始终是最新的,同时避免了重复插入相同的数据。

API接口调用

最后,通过调用 API 接口 execute 来执行上述 SQL 操作:

{
  api: 'execute',
  effect: 'EXECUTE',
  method: 'SQL'
}

此配置指定了 API 的执行方法为 SQL,并通过 effect 字段定义了操作类型为执行(EXECUTE)。这样可以确保 SQL 插入语句被正确地执行,从而将清洗后的数据写入目标 MySQL 数据库。

总结

通过上述步骤,我们成功地实现了从源系统到目标平台的数据 ETL 转换和写入。这一过程充分利用了轻易云数据集成平台提供的元数据配置功能,使得整个操作过程透明且高效。 金蝶与外部系统打通接口

Copyright Notice

The article "如何高效同步金蝶云星空数据至MySQL数据库" is original content owned by 广东轻亿云软件科技有限公司. Reposting is welcome, provided the source (including the original link) is credited in a prominent position.