diff --git a/tdenginereader/doc/tdenginereader.md b/tdenginereader/doc/tdenginereader-CN.md
similarity index 88%
rename from tdenginereader/doc/tdenginereader.md
rename to tdenginereader/doc/tdenginereader-CN.md
index 3c683a64..fe0e4877 100644
--- a/tdenginereader/doc/tdenginereader.md
+++ b/tdenginereader/doc/tdenginereader-CN.md
@@ -37,8 +37,7 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
"phase"
],
"beginDateTime": "2017-07-14 10:40:00",
- "endDateTime": "2017-08-14 10:40:00",
- "splitInterval": "1d"
+ "endDateTime": "2017-08-14 10:40:00"
}
},
"writer": {
@@ -79,17 +78,12 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
* 必选:是
* 默认值:无
* **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
- * 必选:是
- * 默认值:无
-* **splitInterval**
- * 描述:按照splitInterval来划分task, 每splitInterval创建一个task。例如,20d代表按照每20天的数据划分为1个task。
- 可以配置的时间单位为:d(天), h(小时), m(分钟), s(秒)
- * 必选:是
+ * 描述:数据的结束时间,Job迁移从begineDateTime到endDateTime的数据,格式为yyyy-MM-dd HH:mm:ss,如果不填为全量同步
+ * 必选:否
* 默认值:无
### 3.3 类型转换
@@ -106,7 +100,6 @@ TDengineReader 通过TDengine的JDBC driver查询获取数据。
| BINARY | Bytes |
| NCHAR | String |
-
## 4 性能报告
### 4.1 环境准备
diff --git a/tdenginereader/pom.xml b/tdenginereader/pom.xml
index ca444bce..69ea0c0d 100644
--- a/tdenginereader/pom.xml
+++ b/tdenginereader/pom.xml
@@ -29,10 +29,29 @@
+
+ com.alibaba
+ fastjson
+ 1.2.78
+
+
+
+ com.alibaba.datax.tdenginewriter
+ tdenginewriter
+ 0.0.1-SNAPSHOT
+ compile
+
+
com.taosdata.jdbc
taos-jdbcdriver
2.0.37
+
+
+ com.alibaba
+ fastjson
+
+
@@ -47,6 +66,21 @@
0.0.1-SNAPSHOT
compile
+
+
+ com.alibaba.datax
+ datax-core
+ 0.0.1-SNAPSHOT
+ test
+
+
+
+ com.dameng
+ dm-jdbc
+ 1.8
+ system
+ ${project.basedir}/src/test/resources/DmJdbcDriver18.jar
+
diff --git a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/Key.java b/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/Key.java
deleted file mode 100644
index 95b55386..00000000
--- a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/Key.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.alibaba.datax.plugin.reader;
-
-public class Key {
-
- public static final String JDBC_URL = "jdbcUrl";
-// public static final String HOST = "host";
-// public static final String PORT = "port";
-// public static final String DB = "db";
- public static final String TABLE = "table";
- public static final String USER = "username";
- public static final String PASSWORD = "password";
- public static final String CONNECTION = "connection";
-// public static final String SQL = "sql";
- public static final String BEGIN_DATETIME = "beginDateTime";
- public static final String END_DATETIME = "endDateTime";
- public static final String SPLIT_INTERVAL = "splitInterval";
- public static final String COLUMN = "column";
- public static final String MANDATORY_ENCODING = "mandatoryEncoding";
-}
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 f00d879f..6c2f1223 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
@@ -1,13 +1,11 @@
package com.alibaba.datax.plugin.reader;
-import com.alibaba.datax.common.constant.CommonConstant;
import com.alibaba.datax.common.element.*;
import com.alibaba.datax.common.exception.DataXException;
import com.alibaba.datax.common.plugin.RecordSender;
import com.alibaba.datax.common.spi.Reader;
import com.alibaba.datax.common.util.Configuration;
-import com.alibaba.datax.plugin.rdbms.util.DataBaseType;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.datax.plugin.writer.tdenginewriter.Key;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -22,84 +20,77 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TDengineReader extends Reader {
+
private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static class Job extends Reader.Job {
-
private static final Logger LOG = LoggerFactory.getLogger(Job.class);
private Configuration originalConfig;
@Override
public void init() {
this.originalConfig = super.getPluginJobConf();
- // check user
- String user = this.originalConfig.getString(Key.USER);
- if (StringUtils.isBlank(user))
- throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE, "The parameter [" + Key.USER + "] is not set.");
+ // check username
+ String username = this.originalConfig.getString(Key.USERNAME);
+ if (StringUtils.isBlank(username))
+ throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE,
+ "The parameter [" + Key.USERNAME + "] is not set.");
// check password
String password = this.originalConfig.getString(Key.PASSWORD);
if (StringUtils.isBlank(password))
- throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE, "The parameter [" + Key.PASSWORD + "] is not set.");
-
- SimpleDateFormat format = new SimpleDateFormat(DATETIME_FORMAT);
- // check beginDateTime
- String beginDatetime = this.originalConfig.getString(Key.BEGIN_DATETIME);
- if (StringUtils.isBlank(beginDatetime))
- throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE, "The parameter [" + Key.BEGIN_DATETIME + "] is not set.");
- Long start;
- try {
- start = format.parse(beginDatetime).getTime();
- } catch (ParseException e) {
- throw DataXException.asDataXException(TDengineReaderErrorCode.ILLEGAL_VALUE, "The parameter [" + Key.BEGIN_DATETIME + "] needs to conform to the [" + DATETIME_FORMAT + "] format.");
- }
-
- // check endDateTime
- String endDatetime = this.originalConfig.getString(Key.END_DATETIME);
- if (StringUtils.isBlank(endDatetime))
- throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE, "The parameter [" + Key.END_DATETIME + "] is not set.");
- Long end;
- try {
- end = format.parse(endDatetime).getTime();
- } catch (ParseException e) {
- throw DataXException.asDataXException(TDengineReaderErrorCode.ILLEGAL_VALUE, "The parameter [" + Key.END_DATETIME + "] needs to conform to the [" + DATETIME_FORMAT + "] format.");
- }
- if (start >= end)
- throw DataXException.asDataXException(TDengineReaderErrorCode.ILLEGAL_VALUE, "The parameter [" + Key.BEGIN_DATETIME + "] should be less than the parameter [" + Key.END_DATETIME + "].");
-
- // check splitInterval
- String splitInterval = this.originalConfig.getString(Key.SPLIT_INTERVAL);
- Long split;
- if (StringUtils.isBlank(splitInterval))
- throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE, "The parameter [" + Key.SPLIT_INTERVAL + "] is not set.");
- try {
- split = parseSplitInterval(splitInterval);
- } catch (Exception e) {
- throw DataXException.asDataXException(TDengineReaderErrorCode.ILLEGAL_VALUE, "The parameter [" + Key.SPLIT_INTERVAL + "] should be like: \"123d|h|m|s\", error: " + e.getMessage());
- }
-
- this.originalConfig.set(Key.BEGIN_DATETIME, start);
- this.originalConfig.set(Key.END_DATETIME, end);
- this.originalConfig.set(Key.SPLIT_INTERVAL, split);
+ throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE,
+ "The parameter [" + Key.PASSWORD + "] is not set.");
// check connection
List