知行之桥 EDI 系统功能介绍—— Mysql端口配置文档Select篇

Published On: 2026年9月14日Categories: EDI 产品, 帮助文档, 常见问题和回答, 操作指南, 知行之桥, 脚本和自动化Views: 29

© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号

知行之桥 MySQL端口-Select配置文档

一、功能背景

MySQL 端口中的 Select 操作用于从 MySQL 数据库中查询数据,并将查询结果输出为 XML 消息,供工作流下游端口(如 XML Map、EDI、File 等)进一步处理。

典型使用场景

场景 说明 示例
定时拉取待处理业务数据 按固定频率查询符合条件的新增或待处理记录 每5分钟查询一次 status = 0 的订单
条件过滤后输出 根据业务状态、时间范围等条件筛选数据并输出为 XML 查询当天创建的客户信息
读取后自动更新状态 成功提取记录后更新状态位,防止重复处理 查询后将 status0 改为 1

与 Upsert / Lookup / 存储过程类操作的分工

操作 方向 作用
Select(本文) 数据库 → 工作流 从数据库中 读取 数据,输出 XML 消息
Upsert 工作流 → 数据库 将传入的 XML 消息内容 写入 数据库(插入或更新)
Lookup 工作流 → 数据库 → 工作流 根据传入消息中的字段值,查询 数据库并补充字段到消息中
Lookup 存储过程 工作流 → 数据库 → 工作流 根据当前消息中的字段值调用存储过程,并将结果补充回当前消息
执行存储过程 工作流 → 数据库 → 工作流 执行数据库存储过程,由存储过程完成查询、更新或业务处理逻辑

关于 Upsert  Lookup 的详细配置,请参考对应的专项文档。

二、建立连接

使用 MySQL 端口前,需要先创建 MySQL 连接。连接创建后可以被多个 MySQL 端口复用。

2.1 添加 MySQL 端口

进入工作流页面,鼠标右键选择“添加端口”,搜索并选择 MySQL,填写端口 ID,创建Mysql端口。

2.2 创建连接

进入 MySQL 端口的设置页面,在“连接” 下拉框旁点击“添加新连接”。

也可以从全局入口创建:

系统设置 > 连接 > 添加连接 > MySQL

2.3 填写连接信息

配置项 说明 示例
连接名称 连接名称 MySQL1
Server MySQL 服务器地址 192.168.0.0
Port MySQL 端口 3306
Database 数据库名 test
User 用户名 user
Password 密码 123456

填写完成后点击右上角的 添加并测试,如果连接有问题,则会在右下角报错,反之如果连接成功,则会跳转回设置界面。

三、Select:从 MySQL 查询数据

Select 用于从 MySQL 中查询记录,并将查询结果输出为 XML。它通常放在工作流开头。

3.1 适用场景

场景 示例
查询待处理订单 查询 status = 0 的订单
查询主数据 查询客户、物料、供应商信息
定时拉取数据 每 5 分钟从数据库取一次新增记录

3.2 基本配置步骤

本文示例以订单主表(test_order_header) 订单明细表(test_order_item) 为例,演示如何通过 Select 同时查询主表和明细表,并输出为嵌套 XML。

查询目标:

需求 说明
查询条件 只查询 header 表中 status = 0(待处理)的订单
关联关系 item 表的 header_id 必须等于 header 表的 id,即明细行只属于当前订单
处理后动作 查询完成后,将 header 表的 status 更新为 1,避免下次重复拉取

最终输出的 XML 结构为:一个订单头下挂载其对应的所有订单明细行。

基本配置步骤

  1. 打开 MySQL 端口。
  2. 设置界面选择已创建的 MySQL 连接或者创建新连接。
  3. 进入Action界面,操作选择 Select,然后点击 添加表结构
  4. 选择结构类型父表和子表,或联接表,本次示例选择父表和子表
结构类型 说明 适用场景
父表和子表 按父子层级查询,输出嵌套 XML 订单头 + 订单明细
联接表 使用 JOIN 合并多个表,输出一个结果结构 报表类、扁平结构输出


5. 选择你要select的表,先选择父表(test_order_header),然后在右侧点击添加子项表,勾选子表(test_order_item)。

添加完成后,点击右下角应用,返回端口主界面,此时就能看到已选中的父表和子表结构了。

6. 添加主表过滤条件。

将鼠标悬浮在要添加条件的表名上,点击表选项

选择表设置,进入编辑界面

点击过滤器,选择添加过滤器

本示例要查询 status = 0 的数据,按下图配置过滤条件:

配置完成后点击 应用

  1. 添加子表过滤条件

    子表(test_order_item)需要通过 header_id 字段关联到父表(test_order_header)的 id 字段,以确保每个子表记录只属于其对应的父表记录。

    如下图所示,添加过滤器,先在左边下拉框选择子表的header_id列,然后在最右边选择REF,中间的运算符选择相等,最后在运算符右边栏位选择父表的id列。

    配置说明:上述配置生成的 SQL 关联条件等价于 test_order_item.header_id = test_order_header.id。选择 REF 而非 CONST(常量值),是因为 header_id 需要动态匹配每条父表记录的 id,而非固定值。

  2. 代码视图和预览数据

    点击来源处的蓝色表名test_order_header,即可重新进入添加表结构界面

    点击右上角的代码视图,则可以查看当前配置完成的select代码

    点击右上角的预览XML,则可以预览select查询的结果

  3. 读取后更新表状态

    添加表结构界面,勾选更新复选框,选择列 status,填写值为 1。这样查询完成后,test_order_header 表中被查到的记录会自动将 status 更新为 1。该更新发生在 MySQL Select 成功提取记录时,不代表下游端口已全部处理成功。

    本示例仅更新父表状态位,子表状态如需同步更新,需要单独在代码视图处进行设置。

  4. 全部配置完成后,点击右上角的保存按钮,然后在事务界面,点击接收文件 即可读取订单数据。

3.3 结构类型

Select 支持两种常见结构类型。

结构类型 说明 适用场景
父表和子表 按父子层级查询,输出嵌套 XML 订单头 + 订单明细
联接表 使用 JOIN 合并多个表,输出一个结果结构 报表类、扁平结构输出

3.4 当前 TEST_MySQL 的 父表和子表 Select 示例

当前 TEST_MySQL 端口中的 Select 代码 模板如下图:

重点说明:

配置 作用
WHERE status = '0' 只查询待处理订单
WHERE header_id = ${id} 子表按父表 id 查询明细
status updateValue="1" MySQL端口查询并处理该行时将状态更新为1

输出 XML 示例:

<Items>
  <test_order_header>
    <id>1</id>
    <buyerNo>BUYER001</buyerNo>
    <poNo>PO20260827001</poNo>
    <status>0</status>
    <test_order_item>
      <id>10</id>
      <header_id>1</header_id>
      <poLineNo>1</poLineNo>
      <quantity>100</quantity>
    </test_order_item>
  </test_order_header>
</Items>

四、自动化与测试

Select 端口配置完成后,可以通过手动接收进行测试,也可以在“自动化”页面设置定时查询数据库。

4.1 手动测试 Select

第一次配置完成后,建议先手动测试,不要马上开启自动化。

操作步骤:

  1. 确认 MySQL 连接测试成功。
  2. 确认 Select 表结构、父子表关系和过滤条件已保存。
  3. 进入端口的事务页面。
  4. 点击右上角的接收文件
  5. 查看事务列表中是否生成新的输出记录。
  6. 点击输出文件,检查生成的 XML 内容是否符合预期。

如果输出成功,说明 MySQL 端口已经可以按当前 Select 配置从数据库读取数据。

4.2 查看输出 XML

Select 成功后,MySQL 端口会将查询结果输出为 XML。对于父表和子表结构,输出通常是嵌套结构。

示例:

<Items>
	<test_order_header>
		<id>1</id>
		<buyerNo>B01</buyerNo>
		<currency>USD</currency>
		<poDate>2026-08-25T11:36:05.0000+08:00</poDate>
		<poNo>PO001</poNo>
		<status>0</status>
		<test_order_item>
			<id>2</id>
			<buyerItemNO>ITEM001</buyerItemNO>
			<header_id>1</header_id>
			<poLineNo>1</poLineNo>
			<quantity>1000</quantity>
			<requestDeliveryDate>2026-09-30T11:36:39.0000+08:00</requestDeliveryDate>
			<status>0</status>
		</test_order_item>
	</test_order_header>
</Items>

检查输出 XML 时,重点确认以下内容:

检查项 说明
父表数据是否正确 例如订单头字段是否完整
子表数据是否正确 例如明细行是否只属于当前订单
字段类型是否正确 日期、数字字段是否按预期输出
是否存在重复数据 如果重复,检查过滤条件和状态位

4.3 配置自动接收

手动测试成功后,可以配置自动化,让 Select 端口定时从 MySQL 查询数据。

进入自动化界面,勾选启用自动接收,开启后,端口会按设定的接收间隔自动查询 MySQL 数据源。支持多种调度模式

五、高级设置与优化

5.1 输出与批量设置

以下设置在 Select 场景中较为常用,决定查询结果如何输出。

配置项 说明 建议
输出文件格式 输出数据的格式,支持 XMLCSVTSV 默认 XML,便于下游端口(如 XML Map、EDI)处理;包含子表的复杂结构不支持 CSV 和 TSV
最大记录数 单个输出消息中包含的最大记录数 0 表示端口根据输出格式自行决定;-1 表示所有记录放入单个文件
本地文件名格式 输出文件的命名规则,支持宏 建议包含 %ShortDate%%MessageId%,便于追溯

本地文件名格式常用宏示例:

含义
%ConnectorID% 当前端口 ID
%ShortDate% 当前日期(如 2026-08-28
%MessageId% 当前输出消息的唯一 ID
%Table% 查询的表名

示例命名:

MysqlSelect_%ShortDate%_%MessageId%

5.2 连接池设置

连接池管理数据库连接的复用,减少每次查询创建新连接的开销。

配置项 说明 建议
使用连接池 是否启用连接池 建议启用,可提升频繁查询时的性能
连接池最大数量 池中允许的最大连接数 默认 100,按实际并发需求调整
连接池最小数量 池中维护的最小连接数 默认 1,保持默认即可
连接池等待时间 请求等待可用连接的最大秒数 默认 60,超时后返回错误
连接池空闲超时时间 连接在池中保持空闲的最长时间(秒) 默认 60,超时后连接会被关闭

5.3 日志与排查设置

日志设置影响问题排查效率,尤其是 SQL 条件、父子表关联和状态位更新问题的定位。

配置项 说明 建议
日志级别 控制日志详细程度 日常使用 Info;排查时改为 Debug,可查看实际执行的 SQL
保留消息副本 是否在日志目录保存消息副本 建议开启,方便查看输入输出文件
日志文件夹结构 按时间分组保存日志 日志量大时建议按 WeeklyDaily 分组
查询超时时间 SQL 命令执行超时时间(秒) 查询慢或数据量大时适当调大

排查 Select 问题时,建议先临时将日志级别改为 Debug,手动点击“接收文件”,然后在事务日志中查看实际执行的 SQL,确认查询条件是否正确。

六、查看事务日志

在 MySQL Select 端口的事务页面,可以查看每次手动接收或自动接收产生的记录。它是排查 Select 问题最常用的位置。

6.1 查看 Select 输出文件

Select 查询成功后,事务页面会生成一条记录。点击文件名,可以查看或下载输出 XML。

重点查看:

检查项 说明
输出 XML 是否生成 判断 Select 是否查询到数据
父表字段是否完整 判断表字段是否勾选正确
子表节点是否正确 判断父子表关联是否正确
status 是否符合预期 判断状态位更新前后的数据是否正常

6.2 查看日志详情

展开事务记录后,可以查看端口本次执行的详细日志。排查时重点关注以下内容:

日志内容 作用
实际执行的 SQL 确认过滤条件是否正确
查询返回记录数 判断数据库是否查到数据
子表查询语句 判断 header_id = ${id} 是否生效
状态位更新语句 判断 updateValue 是否执行
错误堆栈 判断是否为连接、权限、SQL 或字段问题

提示:如果日志内容不够详细,可以临时将日志级别改为 Debug 后重新测试。问题确认后再改回 Info

七、常见问题与排查思路

7.1 测试连接失败

可能原因:

  • MySQL 服务未启动。
  • Server 或 Port 填写错误。
  • 防火墙未开放。
  • 用户名或密码错误。
  • Database 名称不存在。
  • 数据库用户没有远程访问权限。

排查建议:

  1. 使用 MySQL 客户端在知行之桥服务器上测试连接。
  2. 确认端口是否为 3306 或实际 MySQL 端口。
  3. 确认 MySQL 用户是否允许远程登录。
  4. 确认用户是否有目标表的 SELECT 权限。

7.2 Select 没有输出

可能原因:

  • 过滤条件过严,数据库中没有符合条件的数据。
  • status = 0 的数据已经被处理成 status = 1
  • 表或字段选择错误。
  • 自定义 SQL 在 MySQL 中本身查不到结果。

排查建议:

  1. 先把 Select SQL 放到 MySQL 客户端中执行。
  2. 确认数据库中存在符合条件的数据。
  3. 临时去掉部分过滤条件,缩小问题范围。
  4. 检查是否开启了处理后更新状态位。

7.3 子表数据不正确

如果子表输出过多、过少或和父表对不上,通常是父子表关联条件有问题。

重点检查:

检查项 示例
子表外键是否正确 test_order_item.header_id
父表字段是否正确 test_order_header.id
子表条件是否正确 header_id = ${id}
子表是否挂在正确父表下 test_order_item 应在 test_order_header

7.4 读取后状态没有更新

如果配置了读取后更新 status,但数据库中状态没有变化,可以按以下方向排查:

检查项 说明
主键是否识别 表中应有主键字段,例如 id key="true"
更新字段是否配置正确 例如 <status updateValue="1" />
当前记录是否成功输出 只有 MySQL Select 成功提取该行后才会更新
数据库用户是否有 UPDATE 权限 只有 SELECT 权限无法更新状态
日志中是否有更新 SQL Debug 日志可查看状态位更新动作

7.5 查看日志

排查 Select 问题时,可以临时将日志级别改为 Debug,然后重新点击“接收文件”。

日志中重点查看:

日志内容 作用
实际执行的 SQL 判断查询条件是否正确
返回记录数 判断是否查到数据
子表查询 判断父子表关联是否正确
更新状态位 SQL 判断 updateValue 是否执行

八、总结

MySQL Select 端口的作用是从 MySQL 数据库中查询数据,并将结果输出为知行之桥可以继续处理的 XML。

配置 Select 时,建议按以下顺序操作:

  1. 先创建并测试 MySQL 连接。
  2. 在 Action 页面选择 Select
  3. 先选择父表,再根据业务需要添加子表。
  4. 为父表添加业务过滤条件,例如 status = 0
  5. 为子表添加关联条件,例如 header_id = ${id}
  6. 如需避免重复拉取,可配置处理后更新状态位。
  7. 先手动点击“接收文件”测试,再开启自动化。
  8. 出现问题时,查看事务日志和实际执行 SQL。

对于订单头和订单明细这类一对多业务,推荐使用“父表和子表”结构;对于报表类或扁平数据输出,可以使用“联接表”结构。

为什么选择

知行之桥®?​

根据企业规模与集成需求,提供从本地部署到云端托管的灵活选择

可视化 EDI 工作流

基于拖拽式图形化设计器,零代码构建完整 EDI 业务流程,满足复杂供应链自动化场景。

Odette & Drummond 认证

通过 Odette(OFTP) 与 Drummond(AS2) 权威认证,确保与主机厂安全合规、高可靠的数据交换。

多系统集成能力

提供数据库、REST/SOAP、FTP/SFTP 等标准化接口,实现 ERP、WMS、MES 等系统的双向数据自动同步。

数据映射格式转换

内置可视化 Mapping 编辑器,零代码实现 EDI 报文与企业内部数据格式(XML/JSON…)的映射转换及复杂规则处理。

实时监控预警机制

全流程可视化监控报文状态,支持邮件、钉钉、企业微信自动预警,保障 JIT 交付的稳定性与及时性。

多工厂支持

支持集团级多组织、多工厂架构,实现数据隔离与权限管控,统一平台集中运维,满足大型制造企业多地点协同需求。