Skip to content

Dameng ​

本文介绍如何将 FlowMQ 数据写入达梦数据库(DM8)。

前提条件 ​

  • 已了解管道结构与创建流程,参考 数据集成;Sink 连接器总览见 Sink
  • DM 服务可访问
  • 已具备目标 schema 的建表和写入权限

配置步骤 ​

  1. 在“数据管道”中创建管道,完成基础信息配置。
  2. 在 Source 步骤选择 Kafka(Topic:flowmq.mqtt.kafka),Processors 按需配置。
  3. 在 Sink 步骤选择 Dameng,配置 host、port、username、password、database、table、columns 等参数。
  4. 点击“测试”验证连接。
  5. 继续完成确认步骤。

配置示例 ​

以下示例将 Kafka Topic flowmq.mqtt.kafka 中的样例消息写入目标系统。样例 JSON 与 Source 约定见 Sink · 示例场景。

可参考以下参数示例:

参数建议值
driverdm
host127.0.0.1
port5236
usernameSYSDBA
passwordSYSDBA001
databaseSYSDBA
tablemqtt_kafka_events

目标表示例:

sql
CREATE TABLE IF NOT EXISTS mqtt_kafka_events (
  event_id VARCHAR(64) PRIMARY KEY,
  source_id VARCHAR(255),
  value_time BIGINT,
  reading_value DOUBLE,
  unit_code VARCHAR(64),
  create_time TIMESTAMP
);

columns 字段映射示例(对应样例消息):

namedata_typeis_primary_keyvalue
event_idVARCHARtrue${! uuid_v4() }
source_idVARCHARfalse${! json("source") }
value_timeBIGINTfalse${! json("data.timestamp") }
reading_valueDOUBLEfalse${! json("data.value").number() }
unit_codeVARCHARfalse${! json("type") }
create_timeTIMESTAMPfalse${! json("time").ts_parse("2006-01-02T15:04:05.999Z07:00") }

data.timestamp 为 Unix 毫秒,建议以 BIGINT 落库。写入 TIMESTAMP 列时请用 ts_parse(或 ${! now() }),勿直接填入 ISO 字符串。

必要表单参数 ​

参数名后带 * 表示控制台必填。「支持表达式」为「是」时,可使用 ${! ... } 按消息动态取值,详见 Processors。

参数支持表达式说明
driver*否数据库驱动(Dameng)
host*否数据库地址
port*否数据库端口
username*否数据库用户名
password*否数据库密码
database*否目标 schema
table*否目标表
columns*是列映射(name / data_type / is_primary_key / value)
max_in_flight*否并发写入上限

参数建议 ​

  • 建议目标表具备主键或唯一键,便于幂等写入
  • columns 映射需与表结构类型一致,可用表达式取消息字段

注意事项 ​

  • database 填写 DM schema(如 SYSDBA);JDBC 连接串不能直接填入表单
  • 字段类型映射需与表结构一致;毫秒时间戳用 BIGINT 落库,ISO 时间写入 TIMESTAMP 时使用 ts_parse