diff --git a/tdenginereader/doc/tdenginereader-CN.md b/tdenginereader/doc/tdenginereader-CN.md
index fe0e4877..aa3751ef 100644
--- a/tdenginereader/doc/tdenginereader-CN.md
+++ b/tdenginereader/doc/tdenginereader-CN.md
@@ -6,12 +6,14 @@ TDengineReader 插件实现了 TDengine 读取数据的功能。
## 2 实现原理
-TDengineReader 通过TDengine的JDBC driver查询获取数据。
+TDengineReader 通过 TDengine 的 JDBC driver 查询获取数据。
## 3 功能说明
### 3.1 配置样例
+* 配置一个从 TDengine 抽取数据作业:
+
```json
{
"job": {
@@ -27,7 +29,9 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
"table": [
"meters"
],
- "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/test?timestampFormat=TIMESTAMP"
+ "jdbcUrl": [
+ "jdbc:TAOS-RS://192.168.56.105:6041/test?timestampFormat=TIMESTAMP"
+ ]
}
],
"column": [
@@ -36,6 +40,7 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
"voltage",
"phase"
],
+ "where": "ts>=0",
"beginDateTime": "2017-07-14 10:40:00",
"endDateTime": "2017-08-14 10:40:00"
}
@@ -58,35 +63,89 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
}
```
+* 配置一个自定义 SQL 的数据抽取作业:
+
+```json
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdenginereader",
+ "parameter": {
+ "user": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "querySql": [
+ "select * from test.meters"
+ ],
+ "jdbcUrl": [
+ "jdbc:TAOS-RS://192.168.56.105:6041/test?timestampFormat=TIMESTAMP"
+ ]
+ }
+ ]
+ }
+ },
+ "writer": {
+ "name": "streamwriter",
+ "parameter": {
+ "encoding": "UTF-8",
+ "print": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
+```
+
### 3.2 参数说明
* **username**
- * 描述:TDengine实例的用户名
+ * 描述:TDengine 实例的用户名
* 必选:是
* 默认值:无
* **password**
- * 描述:TDengine实例的密码
+ * 描述:TDengine 实例的密码
* 必选:是
* 默认值:无
-* **table**
- * 描述:所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一schema结构,
- TDengineReader不予检查表是否同一逻辑表。注意,table必须包含在connection配置单元中。
- * 必选:是
- * 默认值:无
* **jdbcUrl**
- * 描述:TDengine数据库的JDBC连接信息。注意,jdbcUrl必须包含在connection配置单元中。JdbcUrl具体请参看TDengine官方文档。
+ * 描述:TDengine 数据库的JDBC连接信息。注意,jdbcUrl必须包含在connection配置单元中。JdbcUrl具体请参看TDengine官方文档。
* 必选:是
* 默认值:无
+* **querySql**
+ * 描述:在有些业务场景下,where 这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了 querySql 后, TDengineReader 就会忽略 table, column,
+ where, beginDateTime, endDateTime这些配置型,直接使用这个配置项的内容对数据进行筛选。例如需要 进行多表join后同步数据,使用 select a,b from table_a join
+ table_b on table_a.id = table_b.id
+ * 必选:否
+ * 默认值:无
+* **table**
+ * 描述:所选取的需要同步的表。使用 JSON 的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需保证多张表是同一 schema 结构, TDengineReader不予检查表是否同一逻辑表。注意,table必须包含在
+ connection 配置单元中。
+ * 必选:是
+ * 默认值:无
+* **where**
+ * 描述:筛选条件中的 where 子句,TDengineReader 根据指定的column, table, where, begingDateTime, endDateTime 条件拼接 SQL,并根据这个 SQL
+ 进行数据抽取。
+ * 必选:否
+ * 默认值:无
* **beginDateTime**
- * 描述:数据的开始时间,Job迁移从begineDateTime到endDateTime的数据,格式为yyyy-MM-dd HH:mm:ss,如果不填为全量同步
+ * 描述:数据的开始时间,Job 迁移从 begineDateTime 到 endDateTime 的数据,格式为 yyyy-MM-dd HH:mm:ss
* 必选:否
* 默认值:无
* **endDateTime**
- * 描述:数据的结束时间,Job迁移从begineDateTime到endDateTime的数据,格式为yyyy-MM-dd HH:mm:ss,如果不填为全量同步
+ * 描述:数据的结束时间,Job 迁移从 begineDateTime 到 endDateTime 的数据,格式为 yyyy-MM-dd HH:mm:ss
* 必选:否
* 默认值:无
### 3.3 类型转换
+
| TDengine 数据类型 | DataX 内部类型 |
| --------------- | ------------- |
| TINYINT | Long |
diff --git a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java b/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java
index 0cf214c1..35c82bed 100644
--- a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java
+++ b/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java
@@ -15,6 +15,8 @@ import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
public class TDengineReader extends Reader {
@@ -41,26 +43,30 @@ public class TDengineReader extends Reader {
"The parameter [" + Key.PASSWORD + "] is not set.");
// check connection
- List