一、支持版本
目前支持 DM 7、8 版本。
二、使用限制
注意:说明:
注意:支持读取视图表。
三、DM 离线单表读取节点配置
| 参数 | 说明 |
| 数据来源 | 可用的 DM 数据源。 |
| 库 | 支持选择、或者手动输入需读取的库名称默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| Schema | 支持选择、或者手动输入需读取的 Schema 名称。 |
| 添加分库分表 | 可创建多个数据源并添加对应的表对象。注意:分库分表情况下选择的多个表对象需保证 Schema 信息一致(包括字段名称、字段类型)。数据字段模块内系统默认展示第一个数据源的第一张表的元数据字段信息,若多表间字段不一致可能会导致运行失败。 |
| 表 | 支持选择、或者手动输入需读取的表名称。 |
| 切割键 | 你可以将源数据表中某一列作为切割键,建议使用主键或有索引的列作为切割键,仅支持类型为整型的字段。 读取数据时,根据配置的字段进行数据分片,实现并发读取,可以提升数据同步效率。 |
| 筛选条件(选填) | 根据数据类型填写对应筛选语句,该语句会作为将要同步数据的筛选条件。 DM 根据指定的 where 条件拼接 SQL,并根据该 SQL 进行数据抽取。例如,在测试时,可以将 where 条件指定为 limit 10。在实际业务场景中,通常会选择当天的数据进行同步,将 where 条件指定为 gmt_create > $bizdate。where 条件可以有效地进行业务增量同步。where 条件为空,视作同步全表所有的信息。 |
四、DM 离线单表写入节点配置
| 参数 | 说明 |
| 数据去向 | 需要写入的 DM 数据源。 |
| 库 | 支持选择、或者手动输入需写入的库名称默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| Schema | 支持选择、或者手动输入需读取的 Schema 名称。 |
| 表 | 支持选择、或者手动输入需写入的表名称当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| 是否清空表 | 在写入该 DM 数据表前可以手动选择是否清空该数据表。 |
| 写入模式 | append:追加写入。upsert:根据设置主键字段进行数据更新写入。 |
| 批量提交大小 | 一次性批量提交的记录数大小,该值可以极大减少数据同步系统与 DM 的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程 OOM 异常。 |
| 前置 SQL(选填) | 执行同步任务之前执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL,例如,执行前清空表中的旧数据(truncate table tablename)。 |
| 后置 SQL(选填) | 执行同步任务之后执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL,例如,加上某一个时间戳 alter table tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。 |
五、读取
| DM 数据类型 | 内部类型 |
| BIGINT、INTEGER、SMALLINT、TINYINT | Long |
| NUMERIC、DECIMAL、DOUBLE、FLOAT、REAL | Double |
| CHAR、VARCHAR、LONGVARCHAR、CLOB | String |
| TIME、DATE、TIMESTAMP | Date |
| BIT、BOOLEAN | Boolean |
| BINARY、VARBINARY、BLOB、LONGVARBINARY | Bytes |
六、写入
| 内部类型 | DM 数据类型 |
| Long | BIGINT、INTEGER、SMALLINT、TINYINT |
| Double | DECIMAL、NUMERIC、DOUBLE、FLOAT、REAL |
| String | CHAR、VARCHAR、CLOB、LONGVARCHAR |
| Date | DATE、TIME、TIMESTAMP |
| Boolean | BOOLEAN、BIT |
| Bytes | BINARY、VARBINARY、BLOB、LONGVARBINARY |
七、达梦 DM 脚本 Demo
如果你配置离线任务时,使用脚本模式的方式进行配置,你需要在任务脚本中,按照脚本的统一格式要求编写脚本中的 reader 参数和 writer 参数。
"job": { "content": [ { "reader": { "parameter": { "password": "******", "column": [ //列名 "id", "name" ], "connection": [ { "jdbcUrl": [ "jdbc:dm://ip:5236/database" ], "table": [ //源表 "schema.source_table" ] } ], "where": "id>10", //筛选条件 "username": "root" }, "name": "rdbmsreader" }, "transformer": [], "writer": { "parameter": { "postSql": [ //后置sql "" ], "password": "******", "column": [ //列名 "id", "name" ], "connection": [ { "jdbcUrl": "jdbc:dm://ip:5236/database", "table": [ //目标表 "schema.sink_table" ] } ], "writeMode": "upsert", //写入模式 "batchSize": 1024, //批量提交大小 "username": "root", "on": [ //唯一性索引 "id" ], "preSql": [ //前置sql "" ] }, "name": "rdbmswriter" } } ], "setting": { "errorLimit": { "record": 0 }, "speed": { "byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s "channel": 1 } }}