SQL Server数据集成到金蝶云星空:泛微项目对接案例
在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将SQL Server中的业务数据高效、安全地集成到金蝶云星空系统中。此次的实际应用场景是“泛微项目=>金蝶辅助资料项目”,目标是实现从SQL Server抓取接口数据并批量写入金蝶云星空。
首先,需要处理的是API接口调用的问题。在SQL Server端,我们采用select
语句获取源数据,而导入至金蝶云星空则利用其提供的batchSave
API进行大批量的数据写入。这种方法能有效提升大量数据的处理时效性,确保业务流程顺畅运行。
-
高吞吐量的数据写入能力:为了支持大规模数据的快速传输,在配置过程中需特别注意数据库连接池和线程调度的优化,确保每个任务都有充足资源促进效率最大化。
-
集中监控和实时告警:整个过程使用了平台内置的集中监控与告警模块,不仅可以实时跟踪每个任务状态,还能针对潜在异常自动发送告警,保证问题早发现、早解决,从而避免系统长时间停滞不前。
-
分页和限流机制:为了解决SQL Server API接口可能存在的分页与限流问题,我们在代码层面加入了动态分页逻辑,同时设置合理阈值,以此分阶段逐步完成全量同步操作。这样既避免了一次性读写过多导致性能瓶颈,也提高了整体稳定性。
-
自定义转换逻辑及格式差异处理:考虑到两套系统之间的数据结构存在差异,通过平台提供自定义转换功能,将获取到的数据按需求重新映射、整理,最终以兼容格式推送至目标系统。这一步骤不仅涉及字段重命名,还涵盖类型转换等复杂操作,是保障集成成功的重要环节之一。
-
异常检测与错误重试机制:集成过程中难免会出现各种不可预见的问题,为此我们配置了完善异常捕捉与错误重试策略。一旦某条记录因网络抖动或其它原因未能成功插入,会被标记并排队等待后续再次尝试提交,使得整个流程更加健壮可靠。
使用轻易云数据集成平台调用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
的对象,其中包含两个子参数:fetch
和offset
。这两个参数用于分页查询,分别表示每次获取的数据条数和偏移量。
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条记录。我们可以按照上述配置进行元数据设置,然后通过轻易云平台发起请求。
具体步骤如下:
- 配置元数据:按照上述示例进行元数据配置。
- 发起请求:通过轻易云平台发起POST请求,传递分页参数(如初始时
offset=0
,fetch=100
)。 - 处理响应:平台自动填充响应结果,并根据条件过滤有效记录。
- 循环获取:如果需要获取更多记录,可以调整
offset
参数(如offset=100
,fetch=100
) 再次发起请求,直到获取到所有所需数据。
通过这种方式,我们可以高效地从SQL Server数据库中提取并加工所需的数据,为后续的数据转换与写入阶段做好准备。
使用轻易云数据集成平台将源数据转换并写入金蝶云星空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"}
}
数据请求与清洗
首先,我们需要从源系统中提取相关的数据。在这个案例中,我们假设已经完成了从泛微项目中提取数据的步骤,并且这些数据已经被清洗和准备好用于转换。
数据转换与写入
-
API接口配置:
api
: 设置为batchSave
,表示我们使用的是批量保存接口。effect
: 设置为EXECUTE
,表示执行操作。method
: 设置为POST
,指明HTTP请求方法。idCheck
: 设置为true
,启用ID检查。
-
请求字段配置:
FNumber
和FDataValue
: 都设置为字符串类型,并且值来自于变量{xmbh}
。这两个字段用于标识项目编号。FId
: 固定值为"001"
,并且使用了一个名为ConvertObjectParser
的解析器,将params
设置为FNumber
。这意味着在写入之前会对该字段进行特定的对象转换。F_WMMX_OAId
: 来自于变量{id}
,用于记录OA回传内码。
-
其他请求参数:
FormId
: 固定值"BOS_ASSISTANTDATA_DETAIL"
,这是金蝶表单ID。Operation
: 固定值"BatchSave"
,表示批量保存操作。IsAutoSubmitAndAudit
: 布尔值设置为true
,表示自动提交和审核。IsVerifyBaseDataField
: 布尔值设置为false
,表示不验证所有基础资料有效性。
-
操作配置:
rowsKey
: 设置为"array"
表示操作的数据结构是数组。rows
: 设置为1,即每次处理一行数据。method
: 设置为"batchArraySave"
表示批量保存的方法。
实际操作步骤
-
提取源数据:通过轻易云平台,从泛微项目中提取所需的数据,并进行初步清洗和处理。
-
配置ETL规则:根据上述元数据配置,在轻易云平台上设置ETL规则,包括字段映射、解析器应用等。
-
执行转换:利用轻易云平台的可视化界面或API调用,将清洗后的源数据按照配置好的规则进行转换。
-
写入目标系统:通过HTTP POST请求,将转换后的数据发送到金蝶云星空API接口,实现批量保存。
通过以上步骤,我们能够高效地将源系统中的数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。