离线同步任务支持SQLServer,支持该数据源的抽取(Reader)导入(Writer),当前支持的版本为:2000 SP42008201220162017

使用前提


在使用之前需要在项目中心(新)完成MySQL数据源的登记并测试通过。
数据源登记过程中,需要填写如下信息:

  • 数据源名称:SQLServer数据源的名称
  • 数据源标识:仅允许包含英文小写、数字、下划线,只允许英文小写开头,最大长度为64个字符。平台内唯一,保存数据源后数据标识不可修改
  • 归属项目:由于元数据中心是项目组级别,因此此处支持选择项目组下的项目,默认为当前项目名称
  • 负责人:默认为当前创建人员
  • 管理员:同负责人,有该数据源的管理权限,包括编辑、设置“源系统账号映射”。可在安全中心为自己或其他人设置该数据源的使用权限
  • 数据源连接:根据jdbc:sqlserver://ServerIP:Port;databaseName=DBjdbc:sqlserver://ServerIP\instanceName:Port;databaseName=DBjdbc:sqlserver://ServerIP:Port;instanceName=InstanceName;databaseName=DB格式进行填写
  • 用户名:填写访问数据源的用户名
  • 密码:填写用户名所对应的密码
  • 自定义属性:支持添加数据源的其它配置
唯一性校验规则:基于数据源连接+用户名进行校验。

数据源配置完成后,需点击测试连接按钮进行测试,测试通过后才可使用。
SQLServer - 图1

除了数据源需要准备之外,进行离线同步任务创建和数据源的使用都需要在安全中心-功能权限中添加相应的权限(可参考数据传输权限元数据中心权限)。

SQLServer作为数据来源


SQLServer to Hive为例,在数据来源端选择SQLServer数据源类型及数据源名称,选择需要进行读取的schema和表。
SQLServer数据源支持库表选择正则匹配

  • 库表选择:支持搜索或直接选择数据库表。支持跨库表配置,跨库表必须是相同数据源类型。
  • 正则匹配:支持通过正则表达式来匹配数据表。

SQLServer数据源支持全量初始化:

  • 全量初始化开关开启时,任务提交上线后首次调度时会忽略数据过滤条件,进行全量同步。
  • 全量初始化开关开启时,如果任务重新提交上线,则重新提交上线后的首次调度仍会进行全量同步。
  • 如果多个数据同步节点引用同一离线同步任务,则每个节点提交上线后的首次调度执行全量初始化操作。

数据过滤支持条件、流水型及自定义。

  • 条件型:按列设置过滤规则,可添加一或多组条件,条件默认为AND关系。
  • 流水型:从选择字段的起始值开始读取数据,读取到最新记录位置,下次从上次的最新记录读取至当前的最新记录。流水型数据过滤方式生效满足以下条件:1. 选取的字段是单调递增的;2. 离线开发任务提交到线上调度执行。
  • 自定义:填写where过滤语句(不含where关键字),通常用作增量同步,支持系统参数和参数组参数。

特殊字符替换并发读取流量控制根据实际情况进行填写。
SQLServer - 图2

需要注意的是支持数据来源为SQLServer时,数据过滤-流水型支持选用timestamp字段作为增量标识字段。SQLServer的timestamp是二进制类型,起始值填写该二进制对应的十进制数即可,可通过CONVERT(BIGINT, ${timestamp_column_name})获取该整数,如下:
SQLServer - 图3

SQLServer作为逻辑数据源


SQLServer支持按照逻辑数据源模式匹配库表,用于同构异ip数据源批量抽取。配置步骤如下:

第一步,在数据来源中将数据源切换成逻辑数据源。
SQLServer - 图4

第二步,选择数据源类型及逻辑数据源,在库名和表名中分别填写通配符进行匹配。
SQLServer - 图5

第三步,点击解析,查看匹配结果。完成数据来源为逻辑数据源的配置步骤。
SQLServer - 图6

关于通配符:

  1. 通配符"_":表示任意单个字符
  2. 通配符"%":能匹配0个或更多字符的任意长度的字符串
  3. 通配符"[]":[]用于指定一定范围内的任何单个字符,包括两端数据,比如指定范围([a-f])
  4. 通配符"[^]":用来查询不属于指定范围,[^abc]表示不包含字符a,b,c

SQLServer作为数据去向


Hive to SQLServer为例,当SQLServer作为数据去向时,除了需要填写数据源类型、数据源等基础信息之外,还可以填写PreSqlPostSql

  • PreSql:执行数据同步任务之前率先执行的SQL语句;目前向导模式仅允许执行一条SQL语句,例如清除旧数据。
  • PostSql:执行数据同步任务之后执行的SQL语句;目前向导模式仅允许执行一条SQL语句,例如加上某一个时间戳。

SQLServer当前只支持INSERT INTO写入规则。流量控制可根据实际情况进行填写。
SQLServer - 图7