高效集成SQLServer数据到金蝶云星空的实战案例

  • 轻易云集成顾问-贺强

SQL Server数据集成到金蝶云星空:泛微项目对接案例

在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将SQL Server中的业务数据高效、安全地集成到金蝶云星空系统中。此次的实际应用场景是“泛微项目=>金蝶辅助资料项目”,目标是实现从SQL Server抓取接口数据并批量写入金蝶云星空。

首先,需要处理的是API接口调用的问题。在SQL Server端,我们采用select语句获取源数据,而导入至金蝶云星空则利用其提供的batchSave API进行大批量的数据写入。这种方法能有效提升大量数据的处理时效性,确保业务流程顺畅运行。

  1. 高吞吐量的数据写入能力:为了支持大规模数据的快速传输,在配置过程中需特别注意数据库连接池和线程调度的优化,确保每个任务都有充足资源促进效率最大化。

  2. 集中监控和实时告警:整个过程使用了平台内置的集中监控与告警模块,不仅可以实时跟踪每个任务状态,还能针对潜在异常自动发送告警,保证问题早发现、早解决,从而避免系统长时间停滞不前。

  3. 分页和限流机制:为了解决SQL Server API接口可能存在的分页与限流问题,我们在代码层面加入了动态分页逻辑,同时设置合理阈值,以此分阶段逐步完成全量同步操作。这样既避免了一次性读写过多导致性能瓶颈,也提高了整体稳定性。

  4. 自定义转换逻辑及格式差异处理:考虑到两套系统之间的数据结构存在差异,通过平台提供自定义转换功能,将获取到的数据按需求重新映射、整理,最终以兼容格式推送至目标系统。这一步骤不仅涉及字段重命名,还涵盖类型转换等复杂操作,是保障集成成功的重要环节之一。

  5. 异常检测与错误重试机制:集成过程中难免会出现各种不可预见的问题,为此我们配置了完善异常捕捉与错误重试策略。一旦某条记录因网络抖动或其它原因未能成功插入,会被标记并排队等待后续再次尝试提交,使得整个流程更加健壮可靠。

如何开发用友BIP接口

使用轻易云数据集成平台调用SQL Server接口获取并加工数据

在数据集成的生命周期中,第一步是从源系统中调用接口获取数据。本文将详细探讨如何使用轻易云数据集成平台配置元数据,从SQL Server接口select获取并加工数据。

配置元数据

首先,我们需要理解元数据配置的各个部分,以便正确调用SQL Server接口。以下是一个典型的元数据配置示例:

{
  "api": "select",
  "effect": "QUERY",
  "method": "POST",
  "number": "xmbh",
  "id": "id",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "children": [
        {
          "field": "fetch",
          "label": "fetch",
          "type": "int",
          "value": "_function 100*1"
        },
        {
          "field": "offset",
          "label": "offset",
          "type": "int",
          "value": "_function 0*0"
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      "label": "main_sql",
      "type": "string",
      "describe": "111",
      "value":"SELECT * FROM uf_SupXDW_ProjectT_dt1 ORDER BY (SELECT NULL) OFFSET :offset ROWS FETCH NEXT :fetch ROWS ONLY"
    }
  ],
  ``autoFillResponse``: true,
  ``condition_bk``: [[{"field":"xmbh","logic":"gt","value":"0"}]]
}

API 接口调用

在这个配置中,api字段指定了我们要调用的API类型为select,表示我们将执行一个查询操作。effect字段为QUERY,表明这是一个查询操作,而非插入或更新。

请求参数设置

请求参数通过request字段进行定义。在这个例子中,我们定义了一个名为main_params的对象,其中包含两个子参数:fetchoffset。这两个参数用于分页查询,分别表示每次获取的数据条数和偏移量。

  • fetch: 设置为每次获取100条记录。
  • offset: 设置为从第0条记录开始。

这些参数通过 _function 表达式进行动态计算,以便在实际运行时根据需求调整。

SQL 查询语句

核心查询语句通过 otherRequest 字段中的 main_sql 定义。这里我们使用了一个分页查询语句:

SELECT * FROM uf_SupXDW_ProjectT_dt1 ORDER BY (SELECT NULL) OFFSET :offset ROWS FETCH NEXT :fetch ROWS ONLY

该语句使用了SQL Server的分页功能,通过:offset:fetch参数控制返回的数据范围。

自动填充响应

设置 autoFillResponse: true 表示平台会自动处理并填充响应结果,这样可以简化后续的数据处理步骤。

条件过滤

最后,通过 condition_bk 字段定义了一个简单的过滤条件:只返回 xmbh > 0 的记录。这确保了我们只处理有效的数据条目。

实际应用案例

假设我们需要从SQL Server数据库中的 uf_SupXDW_ProjectT_dt1 表中获取项目编号大于0的记录,并且每次获取100条记录。我们可以按照上述配置进行元数据设置,然后通过轻易云平台发起请求。

具体步骤如下:

  1. 配置元数据:按照上述示例进行元数据配置。
  2. 发起请求:通过轻易云平台发起POST请求,传递分页参数(如初始时 offset=0, fetch=100)。
  3. 处理响应:平台自动填充响应结果,并根据条件过滤有效记录。
  4. 循环获取:如果需要获取更多记录,可以调整 offset 参数(如 offset=100, fetch=100) 再次发起请求,直到获取到所有所需数据。

通过这种方式,我们可以高效地从SQL Server数据库中提取并加工所需的数据,为后续的数据转换与写入阶段做好准备。 如何对接用友BIP接口

使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程,特别是如何配置元数据以确保数据正确转换和写入。

元数据配置解析

在进行ETL转换时,元数据配置是关键。以下是我们需要配置的元数据:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field": "FNumber", "label": "FNumber", "type": "string", "describe": "111", "value": "{xmbh}"},
    {"field": "FDataValue", "label": "FDataValue", "type": "string", "describe": "111", "value": "{xmbh}"},
    {"field": "FId", "label": "FId", "type": "string", "describe": "111", "value": "001", 
        "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field": "F_WMMX_OAId", "label":"OA回传内码","type":"string","value":"{id}"}
  ],
  "otherRequest":[
    {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"},
    {"field":"Operation","label":"Operation","type":"string","value":"BatchSave"},
    {"field":"IsAutoSubmitAndAudit","label":"IsAutoSubmitAndAudit","type":"bool","value":"true"},
    {"field":"IsVerifyBaseDataField","label":"IsVerifyBaseDataField","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}
  ],
  "operation":{"rowsKey":"array","rows":1,"method":"batchArraySave"}
}

数据请求与清洗

首先,我们需要从源系统中提取相关的数据。在这个案例中,我们假设已经完成了从泛微项目中提取数据的步骤,并且这些数据已经被清洗和准备好用于转换。

数据转换与写入

  1. API接口配置

    • api: 设置为batchSave,表示我们使用的是批量保存接口。
    • effect: 设置为EXECUTE,表示执行操作。
    • method: 设置为POST,指明HTTP请求方法。
    • idCheck: 设置为true,启用ID检查。
  2. 请求字段配置

    • FNumberFDataValue: 都设置为字符串类型,并且值来自于变量 {xmbh}。这两个字段用于标识项目编号。
    • FId: 固定值为 "001",并且使用了一个名为 ConvertObjectParser 的解析器,将 params 设置为 FNumber。这意味着在写入之前会对该字段进行特定的对象转换。
    • F_WMMX_OAId: 来自于变量 {id},用于记录OA回传内码。
  3. 其他请求参数

    • FormId: 固定值 "BOS_ASSISTANTDATA_DETAIL",这是金蝶表单ID。
    • Operation: 固定值 "BatchSave",表示批量保存操作。
    • IsAutoSubmitAndAudit: 布尔值设置为 true,表示自动提交和审核。
    • IsVerifyBaseDataField: 布尔值设置为 false,表示不验证所有基础资料有效性。
  4. 操作配置

    • rowsKey: 设置为 "array" 表示操作的数据结构是数组。
    • rows: 设置为1,即每次处理一行数据。
    • method: 设置为 "batchArraySave" 表示批量保存的方法。

实际操作步骤

  1. 提取源数据:通过轻易云平台,从泛微项目中提取所需的数据,并进行初步清洗和处理。

  2. 配置ETL规则:根据上述元数据配置,在轻易云平台上设置ETL规则,包括字段映射、解析器应用等。

  3. 执行转换:利用轻易云平台的可视化界面或API调用,将清洗后的源数据按照配置好的规则进行转换。

  4. 写入目标系统:通过HTTP POST请求,将转换后的数据发送到金蝶云星空API接口,实现批量保存。

通过以上步骤,我们能够高效地将源系统中的数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 打通企业微信数据接口

更多系统对接方案