hbase20xsqlreader 插件文档

hbase20xsqlreader 插件文档 1 快速介绍 hbase20xsqlreader插件实现了从Phoenix(HBase SQL)读取数据,对应版本为HBase2.X和Phoenix5.X。 2 实现原理 简而言之,hbase20xsqlreader通过Phoenix轻客户端去连接Phoenix QueryServer,并根据用户配置信息生成查询SELECT 语句,然后发送到QueryServer读取HBase数据,并将返回结果使用DataX自定义的数据类型拼装为抽象的数据集,最终传递给下游Writer处理。 3 功能说明 3.1 配置样例 配置一个从Phoenix同步抽取数据到本地的作业: { "job": { "content": [ { "reader": { "name": "hbase20xsqlreader", //指定插件为hbase20xsqlreader "parameter": { "queryServerAddress": "http://127.0.0.1:8765", //填写连接Phoenix QueryServer地址 "serialization": "PROTOBUF", //QueryServer序列化格式 "table": "TEST", //读取表名 "column": ["ID", "NAME"], //所要读取列名 "splitKey": "ID" //切分列,必须是表主键 } }, "writer": { "name": "streamwriter", "parameter": { "encoding": "UTF-8", "print": true } } } ], "setting": { "speed": { "channel": "3" } } } } 3.2 参数说明 queryServerAddress 描述:hbase20xsqlreader需要通过Phoenix轻客户端去连接Phoenix QueryServer,因此这里需要填写对应QueryServer地址。 增强版/Lindorm 用户若需透传user, password参数,可以在queryServerAddress后增加对应可选属性. 格式参考:http://127.0.0.1:8765;user=root;password=root 必选:是 默认值:无 serialization 描述:QueryServer使用的序列化协议 必选:否 默认值:PROTOBUF table 描述:所要读取表名 必选:是 默认值:无 schema 描述:表所在的schema 必选:否 默认值:无 column 描述:填写需要从phoenix表中读取的列名集合,使用JSON的数组描述字段信息,空值表示读取所有列。 必选: 否 默认值:全部列 splitKey 描述:读取表时对表进行切分并行读取,切分时有两种方式:1.根据该列的最大最小值按照指定channel个数均分,这种方式仅支持整形和字符串类型切分列;2.根据设置的splitPoint进行切分 必选:是 默认值:无 splitPoints 描述:由于根据切分列最大最小值切分时不能保证避免数据热点,splitKey支持用户根据数据特征动态指定切分点,对表数据进行切分。建议切分点根据Region的startkey和endkey设置,保证每个查询对应单个Region 必选: 否 默认值:无 where 描述:支持对表查询增加过滤条件,每个切分都会携带该过滤条件。 必选: 否 默认值:无 querySql 描述:支持指定多个查询语句,但查询列类型和数目必须保持一致,用户可根据实际情况手动输入表查询语句或多表联合查询语句,设置该参数后,除queryserverAddress参数必须设置外,其余参数将失去作用或可不设置。 必选: 否 默认值:无 ...

2021-02-02

HBase20xsqlwriter插件文档

HBase20xsqlwriter插件文档 1. 快速介绍 HBase20xsqlwriter实现了向hbase中的SQL表(phoenix)批量导入数据的功能。Phoenix因为对rowkey做了数据编码,所以,直接使用HBaseAPI进行写入会面临手工数据转换的问题,麻烦且易错。本插件提供了SQL方式直接向Phoenix表写入数据。 在底层实现上,通过Phoenix QueryServer的轻客户端驱动,执行UPSERT语句向Phoenix写入数据。 1.1 支持的功能 支持带索引的表的数据导入,可以同步更新所有的索引表 1.2 限制 要求版本为Phoenix5.x及HBase2.x 仅支持通过Phoenix QeuryServer导入数据,因此您Phoenix必须启动QueryServer服务才能使用本插件 不支持清空已有表数据 仅支持通过phoenix创建的表,不支持原生HBase表 不支持带时间戳的数据导入 2. 实现原理 通过Phoenix轻客户端,连接Phoenix QueryServer服务,执行UPSERT语句向表中批量写入数据。因为使用上层接口,所以,可以同步更新索引表。 3. 配置说明 3.1 配置样例 { "job": { "entry": { "jvm": "-Xms2048m -Xmx2048m" }, "content": [ { "reader": { "name": "txtfilereader", "parameter": { "path": "/Users/shf/workplace/datax_test/hbase20xsqlwriter/txt/normal.txt", "charset": "UTF-8", "column": [ { "index": 0, "type": "String" }, { "index": 1, "type": "string" }, { "index": 2, "type": "string" }, { "index": 3, "type": "string" } ], "fieldDelimiter": "," } }, "writer": { "name": "hbase20xsqlwriter", "parameter": { "batchSize": "100", "column": [ "UID", "TS", "EVENTID", "CONTENT" ], "queryServerAddress": "http://127.0.0.1:8765", "nullMode": "skip", "table": "目标hbase表名,大小写有关" } } } ], "setting": { "speed": { "channel": 5 } } } } 3.2 参数说明 name 描述:插件名字,必须是hbase11xsqlwriter 必选:是 默认值:无 schema 描述:表所在的schema 必选:否 默认值:无 table 描述:要导入的表名,大小写敏感,通常phoenix表都是大写表名 必选:是 默认值:无 column 描述:列名,大小写敏感,通常phoenix的列名都是大写。 需要注意列的顺序,必须与reader输出的列的顺序一一对应。 不需要填写数据类型,会自动从phoenix获取列的元数据 必选:是 默认值:无 queryServerAddress 描述:Phoenix QueryServer地址,为必填项,格式:http://NULL:NULL,如http://172.16.34.58:8765。 增强版/Lindorm 用户若需透传user, password参数,可以在queryServerAddress后增加对应可选属性. 格式参考:http://127.0.0.1:8765;user=root;password=root 必选:是 默认值:无 serialization 描述:QueryServer使用的序列化协议 必选:否 默认值:PROTOBUF batchSize 描述:批量写入的最大行数 必选:否 默认值:256 nullMode 描述:读取到的列值为null时,如何处理。目前有两种方式: skip:跳过这一列,即不插入这一列(如果该行的这一列之前已经存在,则会被删除) empty:插入空值,值类型的空值是0,varchar的空值是空字符串 必选:否 默认值:skip ...

2021-02-02

KingbaseesReader 插件文档

KingbaseesReader 插件文档 1 快速介绍 KingbaseesReader插件实现了从KingbaseES读取数据。在底层实现上,KingbaseesReader通过JDBC连接远程KingbaseES数据库,并执行相应的sql语句将数据从KingbaseES库中SELECT出来。 2 实现原理 简而言之,KingbaseesReader通过JDBC连接器连接到远程的KingbaseES数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程KingbaseES数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。 对于用户配置Table、Column、Where的信息,KingbaseesReader将其拼接为SQL语句发送到KingbaseES数据库;对于用户配置querySql信息,KingbaseesReader直接将其发送到KingbaseES数据库。 3 功能说明 3.1 配置样例 配置一个从KingbaseES数据库同步抽取数据到本地的作业: { "job": { "setting": { "speed": { //设置传输速度,单位为byte/s,DataX运行会尽可能达到该速度但是不超过它. "byte": 1048576 }, //出错限制 "errorLimit": { //出错的record条数上限,当大于该值即报错。 "record": 0, //出错的record百分比上限 1.0表示100%,0.02表示2% "percentage": 0.02 } }, "content": [ { "reader": { "name": "kingbaseesreader", "parameter": { // 数据库连接用户名 "username": "xx", // 数据库连接密码 "password": "xx", "column": [ "id","name" ], //切分主键 "splitPk": "id", "connection": [ { "table": [ "table" ], "jdbcUrl": [ "jdbc:kingbase8://host:port/database" ] } ] } }, "writer": { //writer类型 "name": "streamwriter", //是否打印内容 "parameter": { "print":true, } } } ] } } 配置一个自定义SQL的数据库同步任务到本地内容的作业: { "job": { "setting": { "speed": 1048576 }, "content": [ { "reader": { "name": "kingbaseesreader", "parameter": { "username": "xx", "password": "xx", "where": "", "connection": [ { "querySql": [ "select db_id,on_line_flag from db_info where db_id < 10;" ], "jdbcUrl": [ "jdbc:kingbase8://host:port/database", "jdbc:kingbase8://host:port/database" ] } ] } }, "writer": { "name": "streamwriter", "parameter": { "print": false, "encoding": "UTF-8" } } } ] } } 3.2 参数说明 jdbcUrl 描述:描述的是到对端数据库的JDBC连接信息,使用JSON的数组描述,并支持一个库填写多个连接地址。之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,KingbaseesReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,KingbaseesReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。 jdbcUrl按照KingbaseES官方规范,并可以填写连接附件控制信息。具体请参看KingbaseES官方文档。 必选:是 默认值:无 username 描述:数据源的用户名 必选:是 默认值:无 password 描述:数据源指定用户名的密码 必选:是 默认值:无 table 描述:所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一schema结构,KingbaseesReader不予检查表是否同一逻辑表。注意,table必须包含在connection配置单元中。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用*代表默认使用所有列配置,例如[’*’]。 支持列裁剪,即列可以挑选部分列进行导出。 支持列换序,即列可以不按照表schema信息进行导出。 支持常量配置,用户需要按照KingbaseES语法格式: [“id”, “‘hello’::varchar”, “true”, “2.5::real”, “power(2,3)”] id为普通列名,‘hello’::varchar为字符串常量,true为布尔值,2.5为浮点数, power(2,3)为函数。 column必须用户显示指定同步的列集合,不允许为空! 必选:是 默认值:无 splitPk 描述:KingbaseesReader进行数据抽取时,如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,DataX因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。 目前splitPk仅支持整形数据切分,不支持浮点、字符串型、日期等其他类型。如果用户指定其他非支持类型,KingbaseesReader将报错! splitPk设置为空,底层将视作用户不允许对单表进行切分,因此使用单通道进行抽取。 必选:否 默认值:空 where 描述:筛选条件,KingbaseesReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。注意:不可以将where条件指定为limit 10,limit不是SQL的合法where子句。 where条件可以有效地进行业务增量同步。 where条件不配置或者为空,视作全表同步数据。 必选:否 默认值:无 querySql 描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id 当用户配置querySql时,KingbaseesReader直接忽略table、column、where条件的配置。 必选:否 默认值:无 fetchSize 描述:该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能。 注意,该值过大(>2048)可能造成DataX进程OOM。。 必选:否 默认值:1024 ...

2021-02-02

MysqlReader 插件文档

MysqlReader 插件文档 1 快速介绍 MysqlReader插件实现了从Mysql读取数据。在底层实现上,MysqlReader通过JDBC连接远程Mysql数据库,并执行相应的sql语句将数据从mysql库中SELECT出来。 不同于其他关系型数据库,MysqlReader不支持FetchSize. 2 实现原理 简而言之,MysqlReader通过JDBC连接器连接到远程的Mysql数据库,并根据用户配置的信息生成查询SELECT SQL语句,然后发送到远程Mysql数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。 对于用户配置Table、Column、Where的信息,MysqlReader将其拼接为SQL语句发送到Mysql数据库;对于用户配置querySql信息,MysqlReader直接将其发送到Mysql数据库。 3 功能说明 3.1 配置样例 配置一个从Mysql数据库同步抽取数据到本地的作业: { "job": { "setting": { "speed": { "channel": 3 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "root", "column": [ "id", "name" ], "splitPk": "db_id", "connection": [ { "table": [ "table" ], "jdbcUrl": [ "jdbc:mysql://127.0.0.1:3306/database" ] } ] } }, "writer": { "name": "streamwriter", "parameter": { "print":true } } } ] } } 配置一个自定义SQL的数据库同步任务到本地内容的作业: { "job": { "setting": { "speed": { "channel":1 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "root", "connection": [ { "querySql": [ "select db_id,on_line_flag from db_info where db_id < 10;" ], "jdbcUrl": [ "jdbc:mysql://bad_ip:3306/database", "jdbc:mysql://127.0.0.1:bad_port/database", "jdbc:mysql://127.0.0.1:3306/database" ] } ] } }, "writer": { "name": "streamwriter", "parameter": { "print": false, "encoding": "UTF-8" } } } ] } } 3.2 参数说明 jdbcUrl 描述:描述的是到对端数据库的JDBC连接信息,使用JSON的数组描述,并支持一个库填写多个连接地址。之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,MysqlReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,MysqlReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。 jdbcUrl按照Mysql官方规范,并可以填写连接附件控制信息。具体请参看Mysql官方文档。 必选:是 默认值:无 username 描述:数据源的用户名 必选:是 默认值:无 password 描述:数据源指定用户名的密码 必选:是 默认值:无 table 描述:所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一schema结构,MysqlReader不予检查表是否同一逻辑表。注意,table必须包含在connection配置单元中。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用*代表默认使用所有列配置,例如[’*’]。 支持列裁剪,即列可以挑选部分列进行导出。 支持列换序,即列可以不按照表schema信息进行导出。 支持常量配置,用户需要按照Mysql SQL语法格式: [“id”, “`table`”, “1”, “‘bazhen.csy’”, “null”, “to_char(a + 1)”, “2.3” , “true”] id为普通列名,`table`为包含保留在的列名,1为整形数字常量,‘bazhen.csy’为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。 必选:是 默认值:无 splitPk 描述:MysqlReader进行数据抽取时,如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,DataX因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。 目前splitPk仅支持整形数据切分,不支持浮点、字符串、日期等其他类型。如果用户指定其他非支持类型,MysqlReader将报错! 如果splitPk不填写,包括不提供splitPk或者splitPk值为空,DataX视作使用单通道同步该表数据。 必选:否 默认值:空 where 描述:筛选条件,MysqlReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。注意:不可以将where条件指定为limit 10,limit不是SQL的合法where子句。 where条件可以有效地进行业务增量同步。如果不填写where语句,包括不提供where的key或者value,DataX均视作同步全量数据。 必选:否 默认值:无 querySql 描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id 当用户配置querySql时,MysqlReader直接忽略table、column、where条件的配置,querySql优先级大于table、column、where选项。 必选:否 默认值:无 ...

2021-02-02

OpenTSDBReader 插件文档

OpenTSDBReader 插件文档 1 快速介绍 OpenTSDBReader 插件实现了从 OpenTSDB 读取数据。OpenTSDB 是主要由 Yahoo 维护的、可扩展的、分布式时序数据库,与阿里巴巴自研 TSDB 的关系与区别详见阿里云官网:《相比 OpenTSDB 优势》 2 实现原理 在底层实现上,OpenTSDBReader 通过 HTTP 请求链接到 OpenTSDB 实例,利用 /api/config 接口获取到其底层存储 HBase 的连接信息,再利用 AsyncHBase 框架连接 HBase,通过 Scan 的方式将数据点扫描出来。整个同步的过程通过 metric 和时间段进行切分,即某个 metric 在某一个小时内的数据迁移,组合成一个迁移 Task。 3 功能说明 3.1 配置样例 配置一个从 OpenTSDB 数据库同步抽取数据到本地的作业: { "job": { "content": [ { "reader": { "name": "opentsdbreader", "parameter": { "endpoint": "http://localhost:4242", "column": [ "m" ], "beginDateTime": "2019-01-01 00:00:00", "endDateTime": "2019-01-01 03:00:00" } }, "writer": { "name": "streamwriter", "parameter": { "encoding": "UTF-8", "print": true } } } ], "setting": { "speed": { "channel": 1 } } } } 3.2 参数说明 name 描述:本插件的名称 必选:是 默认值:opentsdbreader parameter endpoint 描述:OpenTSDB 的 HTTP 连接地址 必选:是 格式:http://IP:Port 默认值:无 column 描述:数据迁移任务需要迁移的 Metric 列表 必选:是 默认值:无 beginDateTime 描述:和 endDateTime 配合使用,用于指定哪个时间段内的数据点,需要被迁移 必选:是 格式:yyyy-MM-dd HH:mm:ss 默认值:无 注意:指定起止时间会自动忽略分钟和秒,转为整点时刻,例如 2019-4-18 的 [3:35, 4:55) 会被转为 [3:00, 4:00) endDateTime 描述:和 beginDateTime 配合使用,用于指定哪个时间段内的数据点,需要被迁移 必选:是 格式:yyyy-MM-dd HH:mm:ss 默认值:无 注意:指定起止时间会自动忽略分钟和秒,转为整点时刻,例如 2019-4-18 的 [3:35, 4:55) 会被转为 [3:00, 4:00) ...

2021-02-02

OracleReader 插件文档

OracleReader 插件文档 1 快速介绍 OracleReader插件实现了从Oracle读取数据。在底层实现上,OracleReader通过JDBC连接远程Oracle数据库,并执行相应的sql语句将数据从Oracle库中SELECT出来。 2 实现原理 简而言之,OracleReader通过JDBC连接器连接到远程的Oracle数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程Oracle数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。 对于用户配置Table、Column、Where的信息,OracleReader将其拼接为SQL语句发送到Oracle数据库;对于用户配置querySql信息,Oracle直接将其发送到Oracle数据库。 3 功能说明 3.1 配置样例 配置一个从Oracle数据库同步抽取数据到本地的作业: { "job": { "setting": { "speed": { //设置传输速度 byte/s 尽量逼近这个速度但是不高于它. // channel 表示通道数量,byte表示通道速度,如果单通道速度1MB,配置byte为1048576表示一个channel "byte": 1048576 }, //出错限制 "errorLimit": { //先选择record "record": 0, //百分比 1表示100% "percentage": 0.02 } }, "content": [ { "reader": { "name": "oraclereader", "parameter": { // 数据库连接用户名 "username": "root", // 数据库连接密码 "password": "root", "column": [ "id","name" ], //切分主键 "splitPk": "db_id", "connection": [ { "table": [ "table" ], "jdbcUrl": [ "jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]" ] } ] } }, "writer": { //writer类型 "name": "streamwriter", // 是否打印内容 "parameter": { "print": true } } } ] } } 配置一个自定义SQL的数据库同步任务到本地内容的作业: { "job": { "setting": { "speed": { "channel": 5 } }, "content": [ { "reader": { "name": "oraclereader", "parameter": { "username": "root", "password": "root", "where": "", "connection": [ { "querySql": [ "select db_id,on_line_flag from db_info where db_id < 10" ], "jdbcUrl": [ "jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]" ] } ] } }, "writer": { "name": "streamwriter", "parameter": { "visible": false, "encoding": "UTF-8" } } } ] } } 3.2 参数说明 jdbcUrl 描述:描述的是到对端数据库的JDBC连接信息,使用JSON的数组描述,并支持一个库填写多个连接地址。之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,OracleReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,OracleReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。 jdbcUrl按照Oracle官方规范,并可以填写连接附件控制信息。具体请参看Oracle官方文档。 必选:是 默认值:无 username 描述:数据源的用户名 必选:是 默认值:无 password 描述:数据源指定用户名的密码 必选:是 默认值:无 table 描述:所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一schema结构,OracleReader不予检查表是否同一逻辑表。注意,table必须包含在connection配置单元中。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用*代表默认使用所有列配置,例如[’*’]。 支持列裁剪,即列可以挑选部分列进行导出。 支持列换序,即列可以不按照表schema信息进行导出。 支持常量配置,用户需要按照JSON格式: [“id”, “table”, “1”, “‘bazhen.csy’”, “null”, “to_char(a + 1)”, “2.3” , “true”] id为普通列名,`table`为包含保留在的列名,1为整形数字常量,‘bazhen.csy’为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。 Column必须显示填写,不允许为空! 必选:是 默认值:无 splitPk 描述:OracleReader进行数据抽取时,如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,DataX因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。 目前splitPk仅支持整形、字符串型数据切分,不支持浮点、日期等其他类型。如果用户指定其他非支持类型,OracleReader将报错! splitPk如果不填写,将视作用户不对单表进行切分,OracleReader使用单通道同步全量数据。 必选:否 默认值:无 where 描述:筛选条件,MysqlReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。注意:不可以将where条件指定为limit 10,limit不是SQL的合法where子句。 where条件可以有效地进行业务增量同步。 必选:否 默认值:无 querySql 描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id 当用户配置querySql时,OracleReader直接忽略table、column、where条件的配置。 必选:否 默认值:无 fetchSize 描述:该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能。 注意,该值过大(>2048)可能造成DataX进程OOM。。 必选:否 默认值:1024 session 描述:控制写入数据的时间格式,时区等的配置,如果表中有时间字段,配置该值以明确告知写入 oracle 的时间格式。通常配置的参数为:NLS_DATE_FORMAT,NLS_TIME_FORMAT。其配置的值为 json 格式,例如: ...

2021-02-02

OTSReader 插件文档

OTSReader 插件文档 1 快速介绍 OTSReader插件实现了从OTS读取数据,并可以通过用户指定抽取数据范围可方便的实现数据增量抽取的需求。目前支持三种抽取方式: 全表抽取 范围抽取 指定分片抽取 OTS是构建在阿里云飞天分布式系统之上的 NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。 2 实现原理 简而言之,OTSReader通过OTS官方Java SDK连接到OTS服务端,获取并按照DataX官方协议标准转为DataX字段信息传递给下游Writer端。 OTSReader会根据OTS的表范围,按照Datax并发的数目N,将范围等分为N份Task。每个Task都会有一个OTSReader线程来执行。 3 功能说明 3.1 配置样例 配置一个从OTS全表同步抽取数据到本地的作业: { "job": { "setting": { }, "content": [ { "reader": { "name": "otsreader", "parameter": { /* ----------- 必填 --------------*/ "endpoint":"", "accessId":"", "accessKey":"", "instanceName":"", // 导出数据表的表名 "table":"", // 需要导出的列名,支持重复列和常量列,区分大小写 // 常量列:类型支持STRING,INT,DOUBLE,BOOL和BINARY // 备注:BINARY需要通过Base64转换为对应的字符串传入插件 "column":[ {"name":"col1"}, // 普通列 {"name":"col2"}, // 普通列 {"name":"col3"}, // 普通列 {"type":"STRING", "value" : "bazhen"}, // 常量列(字符串) {"type":"INT", "value" : ""}, // 常量列(整形) {"type":"DOUBLE", "value" : ""}, // 常量列(浮点) {"type":"BOOL", "value" : ""}, // 常量列(布尔) {"type":"BINARY", "value" : "Base64(bin)"} // 常量列(二进制),使用Base64编码完成 ], "range":{ // 导出数据的起始范围 // 支持INF_MIN, INF_MAX, STRING, INT "begin":[ {"type":"INF_MIN"}, ], // 导出数据的结束范围 // 支持INF_MIN, INF_MAX, STRING, INT "end":[ {"type":"INF_MAX"}, ] } } }, "writer": {} } ] } } 配置一个定义抽取范围的OTSReader: { "job": { "setting": { "speed": { "byte":10485760 }, "errorLimit":0.0 }, "content": [ { "reader": { "name": "otsreader", "parameter": { "endpoint":"", "accessId":"", "accessKey":"", "instanceName":"", // 导出数据表的表名 "table":"", // 需要导出的列名,支持重复类和常量列,区分大小写 // 常量列:类型支持STRING,INT,DOUBLE,BOOL和BINARY // 备注:BINARY需要通过Base64转换为对应的字符串传入插件 "column":[ {"name":"col1"}, // 普通列 {"name":"col2"}, // 普通列 {"name":"col3"}, // 普通列 {"type":"STRING","value" : ""}, // 常量列(字符串) {"type":"INT","value" : ""}, // 常量列(整形) {"type":"DOUBLE","value" : ""}, // 常量列(浮点) {"type":"BOOL","value" : ""}, // 常量列(布尔) {"type":"BINARY","value" : "Base64(bin)"} // 常量列(二进制) ], "range":{ // 导出数据的起始范围 // 支持INF_MIN, INF_MAX, STRING, INT "begin":[ {"type":"INF_MIN"}, {"type":"INF_MAX"}, {"type":"STRING", "value":"hello"}, {"type":"INT", "value":"2999"}, ], // 导出数据的结束范围 // 支持INF_MIN, INF_MAX, STRING, INT "end":[ {"type":"INF_MAX"}, {"type":"INF_MIN"}, {"type":"STRING", "value":"hello"}, {"type":"INT", "value":"2999"}, ] } } }, "writer": {} } ] } } 3.2 参数说明 endpoint 描述:OTS Server的EndPoint地址,例如http://bazhen.cn−hangzhou.ots.aliyuncs.com。 必选:是 默认值:无 accessId 描述:OTS的accessId 必选:是 默认值:无 accessKey 描述:OTS的accessKey 必选:是 默认值:无 instanceName 描述:OTS的实例名称,实例是用户使用和管理 OTS 服务的实体,用户在开通 OTS 服务之后,需要通过管理控制台来创建实例,然后在实例内进行表的创建和管理。实例是 OTS 资源管理的基础单元,OTS 对应用程序的访问控制和资源计量都在实例级别完成。 必选:是 默认值:无 table 描述:所选取的需要抽取的表名称,这里有且只能填写一张表。在OTS不存在多表同步的需求。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。由于OTS本身是NoSQL系统,在OTSReader抽取数据过程中,必须指定相应地字段名称。 支持普通的列读取,例如: {“name”:“col1”} 支持部分列读取,如用户不配置该列,则OTSReader不予读取。 支持常量列读取,例如: {“type”:“STRING”, “value” : “DataX”}。使用type描述常量类型,目前支持STRING、INT、DOUBLE、BOOL、BINARY(用户使用Base64编码填写)、INF_MIN(OTS的系统限定最小值,使用该值用户不能填写value属性,否则报错)、INF_MAX(OTS的系统限定最大值,使用该值用户不能填写value属性,否则报错)。 不支持函数或者自定义表达式,由于OTS本身不提供类似SQL的函数或者表达式功能,OTSReader也不能提供函数或表达式列功能。 必选:是 默认值:无 begin/end 描述:该配置项必须配对使用,用于支持OTS表范围抽取。begin/end中描述的是OTS PrimaryKey的区间分布状态,而且必须保证区间覆盖到所有的PrimaryKey,需要指定该表下所有的PrimaryKey范围,不能遗漏任意一个PrimaryKey,对于无限大小的区间,可以使用{“type”:“INF_MIN”},{“type”:“INF_MAX”}指代。例如对一张主键为 [DeviceID, SellerID]的OTS进行抽取任务,begin/end可以配置为: "range": { "begin": { {"type":"INF_MIN"}, //指定deviceID最小值 {"type":"INT", "value":"0"} //指定deviceID最小值 }, "end": { {"type":"INF_MAX"}, //指定deviceID抽取最大值 {"type":"INT", "value":"9999"} //指定deviceID抽取最大值 } } 如果要对上述表抽取全表,可以使用如下配置: "range": { "begin": [ {"type":"INF_MIN"}, //指定deviceID最小值 {"type":"INF_MIN"} //指定SellerID最小值 ], "end": [ {"type":"INF_MAX"}, //指定deviceID抽取最大值 {"type":"INF_MAX"} //指定SellerID抽取最大值 ] } 必选:是 默认值:空 split 描述:该配置项属于高级配置项,是用户自己定义切分配置信息,普通情况下不建议用户使用。适用场景通常在OTS数据存储发生热点,使用OTSReader自动切分的策略不能生效情况下,使用用户自定义的切分规则。split指定是的在Begin、End区间内的切分点,且只能是partitionKey的切分点信息,即在split仅配置partitionKey,而不需要指定全部的PrimaryKey。 例如对一张主键为 [DeviceID, SellerID]的OTS进行抽取任务,可以配置为: "range": { "begin": { {"type":"INF_MIN"}, //指定deviceID最小值 {"type":"INF_MIN"} //指定deviceID最小值 }, "end": { {"type":"INF_MAX"}, //指定deviceID抽取最大值 {"type":"INF_MAX"} //指定deviceID抽取最大值 }, // 用户指定的切分点,如果指定了切分点,Job将按照begin、end和split进行Task的切分, // 切分的列只能是Partition Key(ParimaryKey的第一列) // 支持INF_MIN, INF_MAX, STRING, INT "split":[ {"type":"STRING", "value":"1"}, {"type":"STRING", "value":"2"}, {"type":"STRING", "value":"3"}, {"type":"STRING", "value":"4"}, {"type":"STRING", "value":"5"} ] } 必选:否 默认值:无 ...

2021-02-02

OTSWriter 插件文档

OTSWriter 插件文档 1 快速介绍 OTSWriter插件实现了向OTS写入数据,目前支持三种写入方式: PutRow,对应于OTS API PutRow,插入数据到指定的行,如果该行不存在,则新增一行;若该行存在,则覆盖原有行。 UpdateRow,对应于OTS API UpdateRow,更新指定行的数据,如果该行不存在,则新增一行;若该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。 DeleteRow,对应于OTS API DeleteRow,删除指定行的数据。 OTS是构建在阿里云飞天分布式系统之上的 NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。 2 实现原理 简而言之,OTSWriter通过OTS官方Java SDK连接到OTS服务端,并通过SDK写入OTS服务端。OTSWriter本身对于写入过程做了很多优化,包括写入超时重试、异常写入重试、批量提交等Feature。 3 功能说明 3.1 配置样例 配置一个写入OTS作业: { "job": { "setting": { }, "content": [ { "reader": {}, "writer": { "name": "otswriter", "parameter": { "endpoint":"", "accessId":"", "accessKey":"", "instanceName":"", // 导出数据表的表名 "table":"", // Writer支持不同类型之间进行相互转换 // 如下类型转换不支持: // ================================ // int -> binary // double -> bool, binary // bool -> binary // bytes -> int, double, bool // ================================ // 需要导入的PK列名,区分大小写 // 类型支持:STRING,INT // 1. 支持类型转换,注意类型转换时的精度丢失 // 2. 顺序不要求和表的Meta一致 "primaryKey" : [ {"name":"pk1", "type":"string"}, {"name":"pk2", "type":"int"} ], // 需要导入的列名,区分大小写 // 类型支持STRING,INT,DOUBLE,BOOL和BINARY "column" : [ {"name":"col2", "type":"INT"}, {"name":"col3", "type":"STRING"}, {"name":"col4", "type":"STRING"}, {"name":"col5", "type":"BINARY"}, {"name":"col6", "type":"DOUBLE"} ], // 写入OTS的方式 // PutRow : 等同于OTS API中PutRow操作,检查条件是ignore // UpdateRow : 等同于OTS API中UpdateRow操作,检查条件是ignore // DeleteRow: 等同于OTS API中DeleteRow操作,检查条件是ignore "writeMode" : "PutRow" } } } ] } } 3.2 参数说明 endpoint 描述:OTS Server的EndPoint(服务地址),例如http://bazhen.cn−hangzhou.ots.aliyuncs.com。 必选:是 默认值:无 accessId 描述:OTS的accessId 必选:是 默认值:无 accessKey 描述:OTS的accessKey 必选:是 默认值:无 instanceName 描述:OTS的实例名称,实例是用户使用和管理 OTS 服务的实体,用户在开通 OTS 服务之后,需要通过管理控制台来创建实例,然后在实例内进行表的创建和管理。实例是 OTS 资源管理的基础单元,OTS 对应用程序的访问控制和资源计量都在实例级别完成。 必选:是 默认值:无 table 描述:所选取的需要抽取的表名称,这里有且只能填写一张表。在OTS不存在多表同步的需求。 必选:是 默认值:无 primaryKey 描述: OTS的主键信息,使用JSON的数组描述字段信息。OTS本身是NoSQL系统,在OTSWriter导入数据过程中,必须指定相应地字段名称。 OTS的PrimaryKey只能支持STRING,INT两种类型,因此OTSWriter本身也限定填写上述两种类型。 DataX本身支持类型转换的,因此对于源头数据非String/Int,OTSWriter会进行数据类型转换。 配置实例: "primaryKey" : [ {"name":"pk1", "type":"string"}, {"name":"pk2", "type":"int"} ], 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。使用格式为 {"name":"col2", "type":"INT"}, 其中的name指定写入的OTS列名,type指定写入的类型。OTS类型支持STRING,INT,DOUBLE,BOOL和BINARY几种类型 。 写入过程不支持常量、函数或者自定义表达式。 必选:是 默认值:无 writeMode 描述:写入模式,目前支持两种模式, PutRow,对应于OTS API PutRow,插入数据到指定的行,如果该行不存在,则新增一行;若该行存在,则覆盖原有行。 UpdateRow,对应于OTS API UpdateRow,更新指定行的数据,如果该行不存在,则新增一行;若该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。 DeleteRow,对应于OTS API DeleteRow,删除指定行的数据。 必选:是 默认值:无 ...

2021-02-02

PostgresqlReader 插件文档

PostgresqlReader 插件文档 1 快速介绍 PostgresqlReader插件实现了从PostgreSQL读取数据。在底层实现上,PostgresqlReader通过JDBC连接远程PostgreSQL数据库,并执行相应的sql语句将数据从PostgreSQL库中SELECT出来。 2 实现原理 简而言之,PostgresqlReader通过JDBC连接器连接到远程的PostgreSQL数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程PostgreSQL数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。 对于用户配置Table、Column、Where的信息,PostgresqlReader将其拼接为SQL语句发送到PostgreSQL数据库;对于用户配置querySql信息,PostgresqlReader直接将其发送到PostgreSQL数据库。 3 功能说明 3.1 配置样例 配置一个从PostgreSQL数据库同步抽取数据到本地的作业: { "job": { "setting": { "speed": { //设置传输速度,单位为byte/s,DataX运行会尽可能达到该速度但是不超过它. "byte": 1048576 }, //出错限制 "errorLimit": { //出错的record条数上限,当大于该值即报错。 "record": 0, //出错的record百分比上限 1.0表示100%,0.02表示2% "percentage": 0.02 } }, "content": [ { "reader": { "name": "postgresqlreader", "parameter": { // 数据库连接用户名 "username": "xx", // 数据库连接密码 "password": "xx", "column": [ "id","name" ], //切分主键 "splitPk": "id", "connection": [ { "table": [ "table" ], "jdbcUrl": [ "jdbc:postgresql://host:port/database" ] } ] } }, "writer": { //writer类型 "name": "streamwriter", //是否打印内容 "parameter": { "print":true, } } } ] } } 配置一个自定义SQL的数据库同步任务到本地内容的作业: { "job": { "setting": { "speed": 1048576 }, "content": [ { "reader": { "name": "postgresqlreader", "parameter": { "username": "xx", "password": "xx", "where": "", "connection": [ { "querySql": [ "select db_id,on_line_flag from db_info where db_id < 10;" ], "jdbcUrl": [ "jdbc:postgresql://host:port/database", "jdbc:postgresql://host:port/database" ] } ] } }, "writer": { "name": "streamwriter", "parameter": { "print": false, "encoding": "UTF-8" } } } ] } } 3.2 参数说明 jdbcUrl 描述:描述的是到对端数据库的JDBC连接信息,使用JSON的数组描述,并支持一个库填写多个连接地址。之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,PostgresqlReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,PostgresqlReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。 jdbcUrl按照PostgreSQL官方规范,并可以填写连接附件控制信息。具体请参看PostgreSQL官方文档。 必选:是 默认值:无 username 描述:数据源的用户名 必选:是 默认值:无 password 描述:数据源指定用户名的密码 必选:是 默认值:无 table 描述:所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一schema结构,PostgresqlReader不予检查表是否同一逻辑表。注意,table必须包含在connection配置单元中。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用*代表默认使用所有列配置,例如[’*’]。 支持列裁剪,即列可以挑选部分列进行导出。 支持列换序,即列可以不按照表schema信息进行导出。 支持常量配置,用户需要按照PostgreSQL语法格式: [“id”, “‘hello’::varchar”, “true”, “2.5::real”, “power(2,3)”] id为普通列名,‘hello’::varchar为字符串常量,true为布尔值,2.5为浮点数, power(2,3)为函数。 column必须用户显示指定同步的列集合,不允许为空! 必选:是 默认值:无 splitPk 描述:PostgresqlReader进行数据抽取时,如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,DataX因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。 目前splitPk仅支持整形数据切分,不支持浮点、字符串型、日期等其他类型。如果用户指定其他非支持类型,PostgresqlReader将报错! splitPk设置为空,底层将视作用户不允许对单表进行切分,因此使用单通道进行抽取。 必选:否 默认值:空 where 描述:筛选条件,MysqlReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。注意:不可以将where条件指定为limit 10,limit不是SQL的合法where子句。 where条件可以有效地进行业务增量同步。 where条件不配置或者为空,视作全表同步数据。 必选:否 默认值:无 querySql 描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id 当用户配置querySql时,PostgresqlReader直接忽略table、column、where条件的配置。 必选:否 默认值:无 fetchSize 描述:该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能。 注意,该值过大(>2048)可能造成DataX进程OOM。。 必选:否 默认值:1024 ...

2021-02-02

RDBMSReader 插件文档

RDBMSReader 插件文档 1 快速介绍 RDBMSReader插件实现了从RDBMS读取数据。在底层实现上,RDBMSReader通过JDBC连接远程RDBMS数据库,并执行相应的sql语句将数据从RDBMS库中SELECT出来。目前支持达梦、db2、PPAS、Sybase数据库的读取。RDBMSReader是一个通用的关系数据库读插件,您可以通过注册数据库驱动等方式增加任意多样的关系数据库读支持。 2 实现原理 简而言之,RDBMSReader通过JDBC连接器连接到远程的RDBMS数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程RDBMS数据库,并将该SQL执行返回结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。 对于用户配置Table、Column、Where的信息,RDBMSReader将其拼接为SQL语句发送到RDBMS数据库;对于用户配置querySql信息,RDBMS直接将其发送到RDBMS数据库。 3 功能说明 3.1 配置样例 配置一个从RDBMS数据库同步抽取数据作业: { "job": { "setting": { "speed": { "byte": 1048576 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "rdbmsreader", "parameter": { "username": "xxx", "password": "xxx", "column": [ "id", "name" ], "splitPk": "pk", "connection": [ { "table": [ "table" ], "jdbcUrl": [ "jdbc:dm://ip:port/database" ] } ], "fetchSize": 1024, "where": "1 = 1" } }, "writer": { "name": "streamwriter", "parameter": { "print": true } } } ] } } 配置一个自定义SQL的数据库同步任务到ODPS的作业: { "job": { "setting": { "speed": { "byte": 1048576 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "rdbmsreader", "parameter": { "username": "xxx", "password": "xxx", "column": [ "id", "name" ], "splitPk": "pk", "connection": [ { "querySql": [ "SELECT * from dual" ], "jdbcUrl": [ "jdbc:dm://ip:port/database" ] } ], "fetchSize": 1024, "where": "1 = 1" } }, "writer": { "name": "streamwriter", "parameter": { "print": true } } } ] } } 3.2 参数说明 jdbcUrl 描述:描述的是到对端数据库的JDBC连接信息,jdbcUrl按照RDBMS官方规范,并可以填写连接附件控制信息。请注意不同的数据库jdbc的格式是不同的,DataX会根据具体jdbc的格式选择合适的数据库驱动完成数据读取。 达梦 jdbc:dm://ip:port/database db2格式 jdbc:db2://ip:port/database PPAS格式 jdbc:edb://ip:port/database rdbmswriter如何增加新的数据库支持: 进入rdbmsreader对应目录,这里${DATAX_HOME}为DataX主目录,即: ${DATAX_HOME}/plugin/reader/rdbmswriter 在rdbmsreader插件目录下有plugin.json配置文件,在此文件中注册您具体的数据库驱动,具体放在drivers数组中。rdbmsreader插件在任务执行时会动态选择合适的数据库驱动连接数据库。 { "name": "rdbmsreader", "class": "com.alibaba.datax.plugin.reader.rdbmsreader.RdbmsReader", "description": "useScene: prod. mechanism: Jdbc connection using the database, execute select sql, retrieve data from the ResultSet. warn: The more you know about the database, the less problems you encounter.", "developer": "alibaba", "drivers": [ "dm.jdbc.driver.DmDriver", "com.ibm.db2.jcc.DB2Driver", "com.sybase.jdbc3.jdbc.SybDriver", "com.edb.Driver" ] } 在rdbmsreader插件目录下有libs子目录,您需要将您具体的数据库驱动放到libs目录下。 $tree . |-- libs | |-- Dm7JdbcDriver16.jar | |-- commons-collections-3.0.jar | |-- commons-io-2.4.jar | |-- commons-lang3-3.3.2.jar | |-- commons-math3-3.1.1.jar | |-- datax-common-0.0.1-SNAPSHOT.jar | |-- datax-service-face-1.0.23-20160120.024328-1.jar | |-- db2jcc4.jar | |-- druid-1.0.15.jar | |-- edb-jdbc16.jar | |-- fastjson-1.1.46.sec01.jar | |-- guava-r05.jar | |-- hamcrest-core-1.3.jar | |-- jconn3-1.0.0-SNAPSHOT.jar | |-- logback-classic-1.0.13.jar | |-- logback-core-1.0.13.jar | |-- plugin-rdbms-util-0.0.1-SNAPSHOT.jar | `-- slf4j-api-1.7.10.jar |-- plugin.json |-- plugin_job_template.json `-- rdbmsreader-0.0.1-SNAPSHOT.jar 必选:是 默认值:无 username 描述:数据源的用户名。 必选:是 默认值:无 password 描述:数据源指定用户名的密码。 必选:是 默认值:无 table 描述:所选取的需要同步的表名。 必选:是 默认值:无 column 描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用代表默认使用所有列配置,例如[’’]。 支持列裁剪,即列可以挑选部分列进行导出。 支持列换序,即列可以不按照表schema信息进行导出。 支持常量配置,用户需要按照JSON格式: [“id”, “1”, “‘bazhen.csy’”, “null”, “to_char(a + 1)”, “2.3” , “true”] id为普通列名,1为整形数字常量,‘bazhen.csy’为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。 Column必须显示填写,不允许为空! 必选:是 默认值:无 splitPk 描述:RDBMSReader进行数据抽取时,如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,DataX因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。 目前splitPk仅支持整形数据切分,不支持浮点、字符串型、日期等其他类型。如果用户指定其他非支持类型,RDBMSReader将报错! splitPk如果不填写,将视作用户不对单表进行切分,RDBMSReader使用单通道同步全量数据。 必选:否 默认值:空 where 描述:筛选条件,RDBMSReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10;在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。 。 where条件可以有效地进行业务增量同步。where条件不配置或者为空,视作全表同步数据。 必选:否 默认值:无 querySql 描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id 当用户配置querySql时,RDBMSReader直接忽略table、column、where条件的配置。 必选:否 默认值:无 fetchSize 描述:该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能。 注意,该值过大(>2048)可能造成DataX进程OOM。。 必选:否 默认值:1024 ...

2021-02-02