diff --git a/README.md b/README.md
index d970d6bf..98e80f7b 100644
--- a/README.md
+++ b/README.md
@@ -37,6 +37,7 @@ DataX本身作为数据同步框架,将不同数据源的同步抽象为从源
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图,详情请点击:[DataX数据源参考指南](https://github.com/alibaba/DataX/wiki/DataX-all-data-channels)
+
| 类型 | 数据源 | Reader(读) | Writer(写) | 文档 |
|--------------|---------------------------|:---------:|:---------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| RDBMS 关系型数据库 | MySQL | √ | √ | [读](https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md) 、[写](https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md) |
diff --git a/package.xml b/package.xml
index c0f9cdf4..e52dbe13 100644
--- a/package.xml
+++ b/package.xml
@@ -132,7 +132,14 @@
datax
- tdenginereader/target/datax/
+ tdengine20reader/target/datax/
+
+ **/*.*
+
+ datax
+
+
+ tdengine30reader/target/datax/
**/*.*
@@ -267,7 +274,14 @@
datax
- tdenginewriter/target/datax/
+ tdengine20writer/target/datax/
+
+ **/*.*
+
+ datax
+
+
+ tdengine30writer/target/datax/
**/*.*
diff --git a/pom.xml b/pom.xml
index 1b364a75..2971c7ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,7 +74,8 @@
clickhousereader
mongodbreader
- tdenginereader
+ tdengine20reader
+ tdengine30reader
gdbreader
tsdbreader
opentsdbreader
@@ -115,7 +116,8 @@
elasticsearchwriter
mongodbwriter
- tdenginewriter
+ tdengine20writer
+ tdengine30writer
ocswriter
tsdbwriter
gdbwriter
diff --git a/tdenginereader/doc/tdenginereader-CN.md b/tdengine20reader/doc/tdengine20reader-CN.md
similarity index 98%
rename from tdenginereader/doc/tdenginereader-CN.md
rename to tdengine20reader/doc/tdengine20reader-CN.md
index e9502756..ed7ee990 100644
--- a/tdenginereader/doc/tdenginereader-CN.md
+++ b/tdengine20reader/doc/tdengine20reader-CN.md
@@ -20,7 +20,7 @@ TDengineReader 通过 TDengine 的 JDBC driver 查询获取数据。
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
@@ -71,7 +71,7 @@ TDengineReader 通过 TDengine 的 JDBC driver 查询获取数据。
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"user": "root",
"password": "taosdata",
diff --git a/tdengine20reader/pom.xml b/tdengine20reader/pom.xml
new file mode 100644
index 00000000..4d96faaf
--- /dev/null
+++ b/tdengine20reader/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ datax-all
+ com.alibaba.datax
+ 0.0.1-SNAPSHOT
+
+ 4.0.0
+
+ tdengine20reader
+
+
+ 8
+ 8
+
+
+
+
+ com.alibaba.datax
+ datax-common
+ ${datax-project-version}
+
+
+ slf4j-log4j12
+ org.slf4j
+
+
+
+
+
+ com.alibaba.datax.tdengine20writer
+ tdengine20writer
+ 0.0.1-SNAPSHOT
+ compile
+
+
+
+ com.taosdata.jdbc
+ taos-jdbcdriver
+ 2.0.42
+
+
+
+ junit
+ junit
+ ${junit-version}
+ test
+
+
+ com.alibaba.datax
+ plugin-rdbms-util
+ 0.0.1-SNAPSHOT
+ compile
+
+
+
+ com.alibaba.datax
+ datax-core
+ 0.0.1-SNAPSHOT
+ test
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ maven-compiler-plugin
+
+ ${jdk-version}
+ ${jdk-version}
+ ${project-sourceEncoding}
+
+
+
+ maven-assembly-plugin
+
+
+ src/main/assembly/package.xml
+
+ datax
+
+
+
+ dwzip
+ package
+
+ single
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.12.4
+
+
+
+ **/*Test.java
+
+
+
+
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tdenginereader/src/main/assembly/package.xml b/tdengine20reader/src/main/assembly/package.xml
similarity index 76%
rename from tdenginereader/src/main/assembly/package.xml
rename to tdengine20reader/src/main/assembly/package.xml
index b52f20fb..af42fd1f 100755
--- a/tdenginereader/src/main/assembly/package.xml
+++ b/tdengine20reader/src/main/assembly/package.xml
@@ -13,21 +13,21 @@
plugin.json
plugin_job_template.json
- plugin/reader/tdenginereader
+ plugin/reader/tdengine20reader
target/
- tdenginereader-0.0.1-SNAPSHOT.jar
+ tdengine20reader-0.0.1-SNAPSHOT.jar
- plugin/reader/tdenginereader
+ plugin/reader/tdengine20reader
false
- plugin/reader/tdenginereader/libs
+ plugin/reader/tdengine20reader/libs
runtime
diff --git a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java b/tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReader.java
similarity index 98%
rename from tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java
rename to tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReader.java
index 4ec42d9e..7b6ca1cb 100644
--- a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReader.java
+++ b/tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReader.java
@@ -1,11 +1,12 @@
-package com.alibaba.datax.plugin.reader;
+package com.alibaba.datax.plugin.tdengine20reader;
import com.alibaba.datax.common.element.*;
+import com.alibaba.datax.common.element.Record;
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.writer.tdenginewriter.Key;
+import com.alibaba.datax.plugin.writer.tdengine20writer.Key;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -15,8 +16,6 @@ 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 {
diff --git a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReaderErrorCode.java b/tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderErrorCode.java
similarity index 94%
rename from tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReaderErrorCode.java
rename to tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderErrorCode.java
index b784ab06..1deea80f 100644
--- a/tdenginereader/src/main/java/com/alibaba/datax/plugin/reader/TDengineReaderErrorCode.java
+++ b/tdengine20reader/src/main/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderErrorCode.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.reader;
+package com.alibaba.datax.plugin.tdengine20reader;
import com.alibaba.datax.common.spi.ErrorCode;
diff --git a/tdenginereader/src/main/resources/plugin.json b/tdengine20reader/src/main/resources/plugin.json
similarity index 61%
rename from tdenginereader/src/main/resources/plugin.json
rename to tdengine20reader/src/main/resources/plugin.json
index 7ccdbe63..21496255 100755
--- a/tdenginereader/src/main/resources/plugin.json
+++ b/tdengine20reader/src/main/resources/plugin.json
@@ -1,6 +1,6 @@
{
- "name": "tdenginereader",
- "class": "com.alibaba.datax.plugin.reader.TDengineReader",
+ "name": "tdengine20reader",
+ "class": "com.alibaba.datax.plugin.tdengine20reader.TDengineReader",
"description": {
"useScene": "data migration from tdengine",
"mechanism": "use JDBC to read data from tdengine."
diff --git a/tdenginereader/src/main/resources/plugin_job_template.json b/tdengine20reader/src/main/resources/plugin_job_template.json
similarity index 90%
rename from tdenginereader/src/main/resources/plugin_job_template.json
rename to tdengine20reader/src/main/resources/plugin_job_template.json
index 934fe96a..c35007ad 100644
--- a/tdenginereader/src/main/resources/plugin_job_template.json
+++ b/tdengine20reader/src/main/resources/plugin_job_template.json
@@ -1,5 +1,5 @@
{
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"user": "",
"password": "",
diff --git a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2DMTest.java b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2DMTest.java
similarity index 98%
rename from tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2DMTest.java
rename to tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2DMTest.java
index e1064717..347c63c6 100644
--- a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2DMTest.java
+++ b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2DMTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.reader;
+package com.alibaba.datax.plugin.tdengine20reader;
import com.alibaba.datax.core.Engine;
import org.junit.Ignore;
diff --git a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2StreamTest.java b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2StreamTest.java
similarity index 98%
rename from tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2StreamTest.java
rename to tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2StreamTest.java
index f628a648..7d4dbb72 100644
--- a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengine2StreamTest.java
+++ b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengine2StreamTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.reader;
+package com.alibaba.datax.plugin.tdengine20reader;
import com.alibaba.datax.core.Engine;
import org.junit.Ignore;
diff --git a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengineReaderTest.java b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderTest.java
similarity index 98%
rename from tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengineReaderTest.java
rename to tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderTest.java
index 491ddbaf..6d839eb4 100644
--- a/tdenginereader/src/test/java/com/alibaba/datax/plugin/reader/TDengineReaderTest.java
+++ b/tdengine20reader/src/test/java/com/alibaba/datax/plugin/tdengine20reader/TDengineReaderTest.java
@@ -1,7 +1,7 @@
-package com.alibaba.datax.plugin.reader;
+package com.alibaba.datax.plugin.tdengine20reader;
import com.alibaba.datax.common.util.Configuration;
-import com.alibaba.datax.plugin.writer.tdenginewriter.Key;
+import com.alibaba.datax.plugin.writer.tdengine20writer.Key;
import org.junit.Assert;
import org.junit.Test;
diff --git a/tdenginereader/src/test/resources/t2dm.json b/tdengine20reader/src/test/resources/t2dm.json
similarity index 96%
rename from tdenginereader/src/test/resources/t2dm.json
rename to tdengine20reader/src/test/resources/t2dm.json
index d87ade0c..088a5f86 100644
--- a/tdenginereader/src/test/resources/t2dm.json
+++ b/tdengine20reader/src/test/resources/t2dm.json
@@ -3,7 +3,7 @@
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginereader/src/test/resources/t2stream-1.json b/tdengine20reader/src/test/resources/t2stream-1.json
similarity index 96%
rename from tdenginereader/src/test/resources/t2stream-1.json
rename to tdengine20reader/src/test/resources/t2stream-1.json
index 183ab7e2..0a7dbcf9 100644
--- a/tdenginereader/src/test/resources/t2stream-1.json
+++ b/tdengine20reader/src/test/resources/t2stream-1.json
@@ -3,7 +3,7 @@
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginereader/src/test/resources/t2stream-2.json b/tdengine20reader/src/test/resources/t2stream-2.json
similarity index 95%
rename from tdenginereader/src/test/resources/t2stream-2.json
rename to tdengine20reader/src/test/resources/t2stream-2.json
index 15bfe9be..56f27e71 100644
--- a/tdenginereader/src/test/resources/t2stream-2.json
+++ b/tdengine20reader/src/test/resources/t2stream-2.json
@@ -3,7 +3,7 @@
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/doc/tdenginewriter-CN.md b/tdengine20writer/doc/tdengine20writer-CN.md
similarity index 98%
rename from tdenginewriter/doc/tdenginewriter-CN.md
rename to tdengine20writer/doc/tdengine20writer-CN.md
index 3d115fb7..a4342e76 100644
--- a/tdenginewriter/doc/tdenginewriter-CN.md
+++ b/tdengine20writer/doc/tdengine20writer-CN.md
@@ -1,6 +1,6 @@
# DataX TDengineWriter
-简体中文| [English](./tdenginewriter.md)
+简体中文| [English](./tdengine20writer.md)
## 1 快速介绍
@@ -80,7 +80,7 @@ create table test.weather (ts timestamp, temperature int, humidity double) tags(
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/doc/tdenginewriter.md b/tdengine20writer/doc/tdengine20writer.md
similarity index 98%
rename from tdenginewriter/doc/tdenginewriter.md
rename to tdengine20writer/doc/tdengine20writer.md
index d23a2b4f..ddb82db8 100644
--- a/tdenginewriter/doc/tdenginewriter.md
+++ b/tdengine20writer/doc/tdengine20writer.md
@@ -1,6 +1,6 @@
# DataX TDengineWriter
-[简体中文](./tdenginewriter-CN.md) | English
+[简体中文](./tdengine20writer-CN.md) | English
## 1 Quick Introduction
@@ -82,7 +82,7 @@ Write data to TDengine using the following Job configuration:
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/pom.xml b/tdengine20writer/pom.xml
similarity index 96%
rename from tdenginewriter/pom.xml
rename to tdengine20writer/pom.xml
index a7564e6b..3bac1bdc 100644
--- a/tdenginewriter/pom.xml
+++ b/tdengine20writer/pom.xml
@@ -9,8 +9,8 @@
4.0.0
- com.alibaba.datax.tdenginewriter
- tdenginewriter
+ com.alibaba.datax.tdengine20writer
+ tdengine20writer
0.0.1-SNAPSHOT
@@ -23,7 +23,7 @@
com.taosdata.jdbc
taos-jdbcdriver
- 2.0.39
+ 2.0.42
diff --git a/tdenginewriter/src/main/assembly/package.xml b/tdengine20writer/src/main/assembly/package.xml
similarity index 76%
rename from tdenginewriter/src/main/assembly/package.xml
rename to tdengine20writer/src/main/assembly/package.xml
index d3b75ea2..69e6ee02 100644
--- a/tdenginewriter/src/main/assembly/package.xml
+++ b/tdengine20writer/src/main/assembly/package.xml
@@ -13,21 +13,21 @@
plugin.json
plugin_job_template.json
- plugin/writer/tdenginewriter
+ plugin/writer/tdengine20writer
target/
- tdenginewriter-0.0.1-SNAPSHOT.jar
+ tdengine20writer-0.0.1-SNAPSHOT.jar
- plugin/writer/tdenginewriter
+ plugin/writer/tdengine20writer
false
- plugin/writer/tdenginewriter/libs
+ plugin/writer/tdengine20writer/libs
runtime
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/ColumnMeta.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/ColumnMeta.java
similarity index 90%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/ColumnMeta.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/ColumnMeta.java
index 5c77eccd..cf707ef2 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/ColumnMeta.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/ColumnMeta.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public class ColumnMeta {
String field;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Constants.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Constants.java
similarity index 82%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Constants.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Constants.java
index d62c8f32..3dc5c41b 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Constants.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Constants.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public class Constants {
public static final String DEFAULT_USERNAME = "root";
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DataHandler.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DataHandler.java
similarity index 79%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DataHandler.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DataHandler.java
index f22d4d6c..01f388e5 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DataHandler.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DataHandler.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.plugin.RecordReceiver;
import com.alibaba.datax.common.plugin.TaskPluginCollector;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandler.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandler.java
similarity index 94%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandler.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandler.java
index 27ade382..4d2b3902 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandler.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandler.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.element.Column;
import com.alibaba.datax.common.element.Record;
@@ -82,6 +82,18 @@ public class DefaultDataHandler implements DataHandler {
// prepare table_name -> column_meta
this.tbnameColumnMetasMap = schemaManager.loadColumnMetas(tables);
+ // filter column
+ for (String tableName : tbnameColumnMetasMap.keySet()) {
+ List columnMetaList = tbnameColumnMetasMap.get(tableName);
+ Iterator iterator = columnMetaList.iterator();
+ while (iterator.hasNext()) {
+ ColumnMeta columnMeta = iterator.next();
+ if (!this.columns.contains(columnMeta.field)) {
+ iterator.remove();
+ }
+ }
+ }
+
List recordBatch = new ArrayList<>();
Record record;
for (int i = 1; (record = lineReceiver.getFromReader()) != null; i++) {
@@ -226,14 +238,18 @@ public class DefaultDataHandler implements DataHandler {
ColumnMeta columnMeta = columnMetas.get(colIndex);
if (columnMeta.isTag) {
Column column = record.getColumn(colIndex);
- switch (columnMeta.type) {
- case "TINYINT":
- case "SMALLINT":
- case "INT":
- case "BIGINT":
- return column.asLong().toString();
- default:
- return column.asString();
+ try {
+ switch (columnMeta.type) {
+ case "TINYINT":
+ case "SMALLINT":
+ case "INT":
+ case "BIGINT":
+ return column.asLong().toString();
+ default:
+ return column.asString();
+ }
+ } catch (Exception e) {
+ LOG.error("failed to get Tag, colIndex: " + colIndex + ", ColumnMeta: " + columnMeta + ", record: " + record, e);
}
}
return "";
@@ -250,8 +266,8 @@ public class DefaultDataHandler implements DataHandler {
StringBuilder sb = new StringBuilder("insert into");
for (Record record : recordBatch) {
- sb.append(" ").append(record.getColumn(indexOf("tbname")).asString())
- .append(" using ").append(table)
+ sb.append(" `").append(record.getColumn(indexOf("tbname")).asString())
+ .append("` using ").append(table)
.append(" tags")
.append(columnMetas.stream().filter(colMeta -> columns.contains(colMeta.field)).filter(colMeta -> {
return colMeta.isTag;
@@ -470,7 +486,7 @@ public class DefaultDataHandler implements DataHandler {
List columnMetas = this.tbnameColumnMetasMap.get(table);
StringBuilder sb = new StringBuilder();
- sb.append("insert into ").append(table).append(" ")
+ sb.append("insert into `").append(table).append("` ")
.append(columnMetas.stream().filter(colMeta -> columns.contains(colMeta.field)).filter(colMeta -> {
return !colMeta.isTag;
}).map(colMeta -> {
@@ -540,8 +556,8 @@ public class DefaultDataHandler implements DataHandler {
List columnMetas = this.tbnameColumnMetasMap.get(table);
StringBuilder sb = new StringBuilder();
- sb.append("insert into ").append(table)
- .append(" ")
+ sb.append("insert into `").append(table)
+ .append("` ")
.append(columnMetas.stream().filter(colMeta -> !colMeta.isTag).filter(colMeta -> columns.contains(colMeta.field)).map(colMeta -> {
return colMeta.field;
}).collect(Collectors.joining(",", "(", ")")))
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Key.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Key.java
similarity index 93%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Key.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Key.java
index 1a9358db..f1a8af23 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/Key.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/Key.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public class Key {
public static final String USERNAME = "username";
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/OpentsdbDataHandler.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/OpentsdbDataHandler.java
similarity index 97%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/OpentsdbDataHandler.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/OpentsdbDataHandler.java
index 2fb5a98f..a80fd615 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/OpentsdbDataHandler.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/OpentsdbDataHandler.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.element.Column;
import com.alibaba.datax.common.element.Record;
@@ -14,7 +14,6 @@ import org.slf4j.LoggerFactory;
import java.sql.Connection;
import java.sql.DriverManager;
-import java.sql.SQLException;
public class OpentsdbDataHandler implements DataHandler {
private static final Logger LOG = LoggerFactory.getLogger(OpentsdbDataHandler.class);
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManager.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManager.java
similarity index 99%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManager.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManager.java
index fc0c002d..f1ec43b7 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManager.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManager.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.exception.DataXException;
import org.apache.commons.lang3.StringUtils;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriter.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriter.java
similarity index 98%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriter.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriter.java
index 73982744..d221cb9d 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriter.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriter.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.exception.DataXException;
import com.alibaba.datax.common.plugin.RecordReceiver;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterErrorCode.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterErrorCode.java
similarity index 93%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterErrorCode.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterErrorCode.java
index 469449e6..d31cd892 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterErrorCode.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterErrorCode.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.spi.ErrorCode;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableMeta.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableMeta.java
similarity index 89%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableMeta.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableMeta.java
index 2a6b0536..870d8188 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableMeta.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableMeta.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public class TableMeta {
TableType tableType;
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableType.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableType.java
similarity index 52%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableType.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableType.java
index 6c97ac3f..a41ef4fa 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TableType.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TableType.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public enum TableType {
SUP_TABLE, SUB_TABLE, NML_TABLE
diff --git a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TimestampPrecision.java b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TimestampPrecision.java
similarity index 53%
rename from tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TimestampPrecision.java
rename to tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TimestampPrecision.java
index 46564d6a..31fbe6cb 100644
--- a/tdenginewriter/src/main/java/com/alibaba/datax/plugin/writer/tdenginewriter/TimestampPrecision.java
+++ b/tdengine20writer/src/main/java/com/alibaba/datax/plugin/writer/tdengine20writer/TimestampPrecision.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
public enum TimestampPrecision {
MILLISEC, MICROSEC, NANOSEC
diff --git a/tdenginewriter/src/main/resources/plugin.json b/tdengine20writer/src/main/resources/plugin.json
similarity index 61%
rename from tdenginewriter/src/main/resources/plugin.json
rename to tdengine20writer/src/main/resources/plugin.json
index 10d8e2cf..83fbdd0f 100644
--- a/tdenginewriter/src/main/resources/plugin.json
+++ b/tdengine20writer/src/main/resources/plugin.json
@@ -1,6 +1,6 @@
{
- "name": "tdenginewriter",
- "class": "com.alibaba.datax.plugin.writer.tdenginewriter.TDengineWriter",
+ "name": "tdengine20writer",
+ "class": "com.alibaba.datax.plugin.writer.tdengine20writer.TDengineWriter",
"description": {
"useScene": "data migration to tdengine",
"mechanism": "use taos-jdbcdriver to write data."
diff --git a/tdenginewriter/src/main/resources/plugin_job_template.json b/tdengine20writer/src/main/resources/plugin_job_template.json
similarity index 90%
rename from tdenginewriter/src/main/resources/plugin_job_template.json
rename to tdengine20writer/src/main/resources/plugin_job_template.json
index 3d303305..dcfeeeea 100644
--- a/tdenginewriter/src/main/resources/plugin_job_template.json
+++ b/tdengine20writer/src/main/resources/plugin_job_template.json
@@ -1,5 +1,5 @@
{
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Csv2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Csv2TDengineTest.java
similarity index 95%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Csv2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Csv2TDengineTest.java
index 7352c3ca..a7faf446 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Csv2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Csv2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Ignore;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DM2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DM2TDengineTest.java
similarity index 98%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DM2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DM2TDengineTest.java
index 15f6b1bc..0f9507d7 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DM2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DM2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Before;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandlerTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandlerTest.java
similarity index 99%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandlerTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandlerTest.java
index 46e601ad..0a77289d 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/DefaultDataHandlerTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/DefaultDataHandlerTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.element.DateColumn;
import com.alibaba.datax.common.element.LongColumn;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mongo2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mongo2TDengineTest.java
similarity index 86%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mongo2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mongo2TDengineTest.java
index 2356b6f8..5c08551a 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mongo2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mongo2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Test;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mysql2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest.java
similarity index 85%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mysql2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest.java
index 4a662711..a49118f5 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Mysql2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Before;
@@ -11,7 +11,7 @@ import java.util.Random;
public class Mysql2TDengineTest {
private static final String host1 = "192.168.56.105";
- private static final String host2 = "192.168.1.93";
+ private static final String host2 = "192.168.56.105";
private static final Random random = new Random(System.currentTimeMillis());
@Test
@@ -21,6 +21,13 @@ public class Mysql2TDengineTest {
Engine.entry(params);
}
+ @Test
+ public void test2() throws Throwable {
+ String[] params = {"-mode", "standalone", "-jobid", "-1", "-job", "src/test/resources/m2t-2.json"};
+ System.setProperty("datax.home", "../target/datax/datax");
+ Engine.entry(params);
+ }
+
@Before
public void before() throws SQLException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
@@ -50,7 +57,7 @@ public class Mysql2TDengineTest {
stmt.close();
}
- final String url2 = "jdbc:TAOS-RS://" + host2 + ":6041/";
+ final String url2 = "jdbc:TAOS://" + host2 + ":6030/";
try (Connection conn = DriverManager.getConnection(url2, "root", "taosdata")) {
Statement stmt = conn.createStatement();
diff --git a/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest2.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest2.java
new file mode 100644
index 00000000..3829ce5d
--- /dev/null
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest2.java
@@ -0,0 +1,66 @@
+package com.alibaba.datax.plugin.writer.tdengine20writer;
+
+import com.alibaba.datax.core.Engine;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.*;
+import java.text.SimpleDateFormat;
+import java.util.Random;
+
+public class Mysql2TDengineTest2 {
+
+ private static final String host1 = "192.168.56.105";
+ private static final String host2 = "192.168.56.105";
+ private static final Random random = new Random(System.currentTimeMillis());
+
+ @Test
+ public void test2() throws Throwable {
+ String[] params = {"-mode", "standalone", "-jobid", "-1", "-job", "src/test/resources/m2t-2.json"};
+ System.setProperty("datax.home", "../target/datax/datax");
+ Engine.entry(params);
+ }
+
+ @Before
+ public void before() throws SQLException {
+ final String[] tagList = {"北京", "海淀", "上海", "河北", "天津"};
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+ String ts = sdf.format(new Date(System.currentTimeMillis()));
+
+ final String url = "jdbc:mysql://" + host1 + ":3306/?useSSL=false&useUnicode=true&charset=UTF-8&generateSimpleParameterMetadata=true";
+ try (Connection conn = DriverManager.getConnection(url, "root", "123456")) {
+ Statement stmt = conn.createStatement();
+
+ stmt.execute("drop database if exists db1");
+ stmt.execute("create database if not exists db1");
+ stmt.execute("use db1");
+ stmt.execute("create table stb1(id int primary key AUTO_INCREMENT, " +
+ "f1 int, f2 float, f3 double, f4 varchar(100), t1 varchar(100), ts timestamp)");
+ for (int i = 1; i <= 10; i++) {
+ String sql = "insert into stb1(f1, f2, f3, f4, t1, ts) values("
+ + random.nextInt(100) + "," + random.nextFloat() * 100 + "," + random.nextDouble() * 100
+ + ",'" + RandomStringUtils.randomAlphanumeric(10)
+ + "', '" + tagList[random.nextInt(tagList.length)]
+ + "', '" + (ts + i * 1000) + "')";
+ stmt.execute(sql);
+ }
+
+ stmt.close();
+ }
+
+ final String url2 = "jdbc:TAOS://" + host2 + ":6030/";
+ try (Connection conn = DriverManager.getConnection(url2, "root", "taosdata")) {
+ Statement stmt = conn.createStatement();
+
+ stmt.execute("drop database if exists db2");
+ stmt.execute("create database if not exists db2");
+ stmt.execute("create table db2.stb2(ts timestamp, f1 int, f2 float, f3 double, f4 nchar(100)) tags(t1 nchar(100))");
+
+ stmt.close();
+ }
+
+ }
+
+}
diff --git a/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest3.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest3.java
new file mode 100644
index 00000000..fb14c334
--- /dev/null
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Mysql2TDengineTest3.java
@@ -0,0 +1,76 @@
+package com.alibaba.datax.plugin.writer.tdengine20writer;
+
+import com.alibaba.datax.core.Engine;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.*;
+import java.text.SimpleDateFormat;
+import java.util.Random;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+public class Mysql2TDengineTest3 {
+
+ private static final String host1 = "192.168.56.105";
+ private static final String host2 = "192.168.56.105";
+ private static final Random random = new Random(System.currentTimeMillis());
+
+ @Test
+ public void test2() throws Throwable {
+ String[] params = {"-mode", "standalone", "-jobid", "-1", "-job", "src/test/resources/m2t-3.json"};
+ System.setProperty("datax.home", "../target/datax/datax");
+ Engine.entry(params);
+ }
+
+ @Before
+ public void before() throws SQLException {
+ // given
+ long ts_start = new Date(System.currentTimeMillis()).getTime();
+ final int columnSize = 10;
+ final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+ final String url = "jdbc:mysql://" + host1 + ":3306/?useSSL=false&useUnicode=true&charset=UTF-8&generateSimpleParameterMetadata=true";
+ try (Connection conn = DriverManager.getConnection(url, "root", "123456")) {
+ Statement stmt = conn.createStatement();
+
+ stmt.execute("drop database if exists db1");
+ stmt.execute("create database if not exists db1");
+ stmt.execute("use db1");
+ stmt.execute("create table stb1(id int primary key AUTO_INCREMENT, "
+ + IntStream.range(1, columnSize).mapToObj(i -> "f" + i + " int").collect(Collectors.joining(",")) + ", "
+ + IntStream.range(1, columnSize).mapToObj(i -> "t" + i + " varchar(20)").collect(Collectors.joining(",")) + ", ts timestamp)");
+ for (int i = 1; i <= 10; i++) {
+ String sql = "insert into stb1("
+ + IntStream.range(1, columnSize).mapToObj(index -> "f" + index).collect(Collectors.joining(",")) + ", "
+ + IntStream.range(1, columnSize).mapToObj(index -> "t" + index).collect(Collectors.joining(","))
+ + ", ts) values("
+ + IntStream.range(1, columnSize).mapToObj(index -> random.nextInt(10) + "").collect(Collectors.joining(","))
+ + ","
+ + IntStream.range(1, columnSize).mapToObj(index -> "'" + RandomStringUtils.randomAlphanumeric(15) + "'").collect(Collectors.joining(","))
+ + ", '" + sdf.format(new Date(ts_start + i * 1000)) + "')";
+ stmt.execute(sql);
+ }
+
+ stmt.close();
+ }
+
+ final String url2 = "jdbc:TAOS://" + host2 + ":6030/";
+ try (Connection conn = DriverManager.getConnection(url2, "root", "taosdata")) {
+ Statement stmt = conn.createStatement();
+
+ stmt.execute("drop database if exists db2");
+ stmt.execute("create database if not exists db2");
+ stmt.execute("create table db2.stb2(ts timestamp, "
+ + IntStream.range(1, 101).mapToObj(i -> "f" + i + " int").collect(Collectors.joining(",")) + ") tags("
+ + IntStream.range(1, 101).mapToObj(i -> "t" + i + " nchar(20)").collect(Collectors.joining(","))
+ + ")"
+ );
+
+ stmt.close();
+ }
+ }
+
+
+}
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Opentsdb2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Opentsdb2TDengineTest.java
similarity index 94%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Opentsdb2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Opentsdb2TDengineTest.java
index ad326f7e..566c8b3c 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Opentsdb2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Opentsdb2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Assert;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManagerTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManagerTest.java
similarity index 98%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManagerTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManagerTest.java
index 3708e6f9..4230d284 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/SchemaManagerTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/SchemaManagerTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import org.junit.AfterClass;
import org.junit.Assert;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Stream2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Stream2TDengineTest.java
similarity index 96%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Stream2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Stream2TDengineTest.java
index e54bcbde..9cc1cee2 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/Stream2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/Stream2TDengineTest.java
@@ -1,7 +1,6 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
-import org.junit.Before;
import org.junit.Test;
import java.sql.Connection;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengine2TDengineTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengine2TDengineTest.java
similarity index 99%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengine2TDengineTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengine2TDengineTest.java
index 9e954633..833976d5 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengine2TDengineTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengine2TDengineTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.core.Engine;
import org.junit.Before;
diff --git a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterTest.java b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterTest.java
similarity index 97%
rename from tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterTest.java
rename to tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterTest.java
index 813f6131..381fb034 100644
--- a/tdenginewriter/src/test/java/com/alibaba/datax/plugin/writer/tdenginewriter/TDengineWriterTest.java
+++ b/tdengine20writer/src/test/java/com/alibaba/datax/plugin/writer/tdengine20writer/TDengineWriterTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.datax.plugin.writer.tdenginewriter;
+package com.alibaba.datax.plugin.writer.tdengine20writer;
import com.alibaba.datax.common.util.Configuration;
import org.junit.Assert;
diff --git a/tdenginewriter/src/test/resources/csv2t.json b/tdengine20writer/src/test/resources/csv2t.json
similarity index 92%
rename from tdenginewriter/src/test/resources/csv2t.json
rename to tdengine20writer/src/test/resources/csv2t.json
index ef5c4d04..cca007a0 100644
--- a/tdenginewriter/src/test/resources/csv2t.json
+++ b/tdengine20writer/src/test/resources/csv2t.json
@@ -6,7 +6,7 @@
"name": "txtfilereader",
"parameter": {
"path": [
- "/Users/yangzy/IdeaProjects/DataX/tdenginewriter/src/test/resources/weather.csv"
+ "/Users/yangzy/IdeaProjects/DataX/tdengine20writer/src/test/resources/weather.csv"
],
"encoding": "UTF-8",
"column": [
@@ -44,7 +44,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/defaultJob.json b/tdengine20writer/src/test/resources/defaultJob.json
similarity index 99%
rename from tdenginewriter/src/test/resources/defaultJob.json
rename to tdengine20writer/src/test/resources/defaultJob.json
index 2a36dfd0..af0563f6 100644
--- a/tdenginewriter/src/test/resources/defaultJob.json
+++ b/tdengine20writer/src/test/resources/defaultJob.json
@@ -161,7 +161,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/dm-schema.sql b/tdengine20writer/src/test/resources/dm-schema.sql
similarity index 100%
rename from tdenginewriter/src/test/resources/dm-schema.sql
rename to tdengine20writer/src/test/resources/dm-schema.sql
diff --git a/tdenginewriter/src/test/resources/dm2t-1.json b/tdengine20writer/src/test/resources/dm2t-1.json
similarity index 97%
rename from tdenginewriter/src/test/resources/dm2t-1.json
rename to tdengine20writer/src/test/resources/dm2t-1.json
index 183786bf..cbacf654 100644
--- a/tdenginewriter/src/test/resources/dm2t-1.json
+++ b/tdengine20writer/src/test/resources/dm2t-1.json
@@ -21,7 +21,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdengine20writer/src/test/resources/dm2t-2.json b/tdengine20writer/src/test/resources/dm2t-2.json
new file mode 100644
index 00000000..7e75bdc7
--- /dev/null
+++ b/tdengine20writer/src/test/resources/dm2t-2.json
@@ -0,0 +1,62 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "rdbmsreader",
+ "parameter": {
+ "username": "TESTUSER",
+ "password": "test123456",
+ "connection": [
+ {
+ "querySql": [
+ "select concat(concat(concat('t', f1), '_'),f3) as tbname,* from stb1;"
+ ],
+ "jdbcUrl": [
+ "jdbc:dm://192.168.0.72:5236"
+ ]
+ }
+ ],
+ "fetchSize": 1024
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "tbname",
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "f10"
+ ],
+ "connection": [
+ {
+ "table": [
+ "t1_0"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.1.93:6041/db2"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdenginewriter/src/test/resources/dm2t-3.json b/tdengine20writer/src/test/resources/dm2t-3.json
similarity index 93%
rename from tdenginewriter/src/test/resources/dm2t-3.json
rename to tdengine20writer/src/test/resources/dm2t-3.json
index cd96a536..a2301ed9 100644
--- a/tdenginewriter/src/test/resources/dm2t-3.json
+++ b/tdengine20writer/src/test/resources/dm2t-3.json
@@ -36,7 +36,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
@@ -58,7 +58,7 @@
"table": [
"stb2"
],
- "jdbcUrl": "jdbc:TAOS-RS://192.168.1.93:6041/db2"
+ "jdbcUrl": "jdbc:TAOS://192.168.1.93:6030/db2"
}
],
"batchSize": 1000,
@@ -73,4 +73,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/tdenginewriter/src/test/resources/dm2t-4.json b/tdengine20writer/src/test/resources/dm2t-4.json
similarity index 97%
rename from tdenginewriter/src/test/resources/dm2t-4.json
rename to tdengine20writer/src/test/resources/dm2t-4.json
index 5f169d5b..a3439601 100644
--- a/tdenginewriter/src/test/resources/dm2t-4.json
+++ b/tdengine20writer/src/test/resources/dm2t-4.json
@@ -21,7 +21,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/clean_env.sh b/tdengine20writer/src/test/resources/incremental_sync/clean_env.sh
similarity index 100%
rename from tdenginewriter/src/test/resources/incremental_sync/clean_env.sh
rename to tdengine20writer/src/test/resources/incremental_sync/clean_env.sh
diff --git a/tdenginewriter/src/test/resources/incremental_sync/csv2t-jni.json b/tdengine20writer/src/test/resources/incremental_sync/csv2t-jni.json
similarity index 98%
rename from tdenginewriter/src/test/resources/incremental_sync/csv2t-jni.json
rename to tdengine20writer/src/test/resources/incremental_sync/csv2t-jni.json
index 625c3801..b47a3596 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/csv2t-jni.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/csv2t-jni.json
@@ -65,7 +65,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/csv2t-restful.json b/tdengine20writer/src/test/resources/incremental_sync/csv2t-restful.json
similarity index 96%
rename from tdenginewriter/src/test/resources/incremental_sync/csv2t-restful.json
rename to tdengine20writer/src/test/resources/incremental_sync/csv2t-restful.json
index d852e2e2..4052c81d 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/csv2t-restful.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/csv2t-restful.json
@@ -16,7 +16,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/dm2t-jni.json b/tdengine20writer/src/test/resources/incremental_sync/dm2t-jni.json
similarity index 97%
rename from tdenginewriter/src/test/resources/incremental_sync/dm2t-jni.json
rename to tdengine20writer/src/test/resources/incremental_sync/dm2t-jni.json
index 3e86bb8d..3c4f3e21 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/dm2t-jni.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/dm2t-jni.json
@@ -21,7 +21,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/dm2t-restful.json b/tdengine20writer/src/test/resources/incremental_sync/dm2t-restful.json
similarity index 97%
rename from tdenginewriter/src/test/resources/incremental_sync/dm2t-restful.json
rename to tdengine20writer/src/test/resources/incremental_sync/dm2t-restful.json
index 183786bf..cbacf654 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/dm2t-restful.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/dm2t-restful.json
@@ -21,7 +21,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/dm2t-update.json b/tdengine20writer/src/test/resources/incremental_sync/dm2t-update.json
similarity index 97%
rename from tdenginewriter/src/test/resources/incremental_sync/dm2t-update.json
rename to tdengine20writer/src/test/resources/incremental_sync/dm2t-update.json
index d9285b23..503f764b 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/dm2t-update.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/dm2t-update.json
@@ -22,7 +22,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/dm2t_sync.sh b/tdengine20writer/src/test/resources/incremental_sync/dm2t_sync.sh
similarity index 100%
rename from tdenginewriter/src/test/resources/incremental_sync/dm2t_sync.sh
rename to tdengine20writer/src/test/resources/incremental_sync/dm2t_sync.sh
diff --git a/tdenginewriter/src/test/resources/incremental_sync/t2dm-jni.json b/tdengine20writer/src/test/resources/incremental_sync/t2dm-jni.json
similarity index 96%
rename from tdenginewriter/src/test/resources/incremental_sync/t2dm-jni.json
rename to tdengine20writer/src/test/resources/incremental_sync/t2dm-jni.json
index 341f6293..d8fd7b13 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/t2dm-jni.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/t2dm-jni.json
@@ -3,7 +3,7 @@
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/t2dm-restful.json b/tdengine20writer/src/test/resources/incremental_sync/t2dm-restful.json
similarity index 96%
rename from tdenginewriter/src/test/resources/incremental_sync/t2dm-restful.json
rename to tdengine20writer/src/test/resources/incremental_sync/t2dm-restful.json
index b2cf91e2..0d66ff6d 100644
--- a/tdenginewriter/src/test/resources/incremental_sync/t2dm-restful.json
+++ b/tdengine20writer/src/test/resources/incremental_sync/t2dm-restful.json
@@ -3,7 +3,7 @@
"content": [
{
"reader": {
- "name": "tdenginereader",
+ "name": "tdengine20reader",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdenginewriter/src/test/resources/incremental_sync/upload.sh b/tdengine20writer/src/test/resources/incremental_sync/upload.sh
similarity index 100%
rename from tdenginewriter/src/test/resources/incremental_sync/upload.sh
rename to tdengine20writer/src/test/resources/incremental_sync/upload.sh
diff --git a/tdenginewriter/src/test/resources/m2t-1.json b/tdengine20writer/src/test/resources/m2t-1.json
similarity index 97%
rename from tdenginewriter/src/test/resources/m2t-1.json
rename to tdengine20writer/src/test/resources/m2t-1.json
index dcacb4b2..0abe6238 100644
--- a/tdenginewriter/src/test/resources/m2t-1.json
+++ b/tdengine20writer/src/test/resources/m2t-1.json
@@ -33,7 +33,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdengine20writer/src/test/resources/m2t-2.json b/tdengine20writer/src/test/resources/m2t-2.json
new file mode 100644
index 00000000..aa1b8e34
--- /dev/null
+++ b/tdengine20writer/src/test/resources/m2t-2.json
@@ -0,0 +1,57 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "mysqlreader",
+ "parameter": {
+ "username": "root",
+ "password": "123456",
+ "splitPk": "id",
+ "connection": [
+ {
+ "querySql": [
+ "select t1 as tbname, ts, f1,f2,f3,f4,t1 from stb1"
+ ],
+ "jdbcUrl": [
+ "jdbc:mysql://192.168.56.105:3306/db1?useSSL=false&useUnicode=true&characterEncoding=utf8"
+ ]
+ }
+ ]
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "tbname",
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "t1"
+ ],
+ "connection": [
+ {
+ "table": [
+ "stb2"
+ ],
+ "jdbcUrl": "jdbc:TAOS://192.168.56.105:6030/db2"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdengine20writer/src/test/resources/m2t-3.json b/tdengine20writer/src/test/resources/m2t-3.json
new file mode 100644
index 00000000..7b0fe6f0
--- /dev/null
+++ b/tdengine20writer/src/test/resources/m2t-3.json
@@ -0,0 +1,53 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "mysqlreader",
+ "parameter": {
+ "username": "root",
+ "password": "123456",
+ "splitPk": "id",
+ "connection": [
+ {
+ "querySql": [
+ "select ts,f1,t1 from stb1"
+ ],
+ "jdbcUrl": [
+ "jdbc:mysql://192.168.56.105:3306/db1?useSSL=false&useUnicode=true&characterEncoding=utf8"
+ ]
+ }
+ ]
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "ts",
+ "f1",
+ "t1"
+ ],
+ "connection": [
+ {
+ "table": [
+ "stb2"
+ ],
+ "jdbcUrl": "jdbc:TAOS://192.168.56.105:6030/db2"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdenginewriter/src/test/resources/mongo2t.json b/tdengine20writer/src/test/resources/mongo2t.json
similarity index 97%
rename from tdenginewriter/src/test/resources/mongo2t.json
rename to tdengine20writer/src/test/resources/mongo2t.json
index 902e6f7c..b3e637c3 100644
--- a/tdenginewriter/src/test/resources/mongo2t.json
+++ b/tdengine20writer/src/test/resources/mongo2t.json
@@ -33,7 +33,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "hmdata",
diff --git a/tdenginewriter/src/test/resources/o2t-1.json b/tdengine20writer/src/test/resources/o2t-1.json
similarity index 95%
rename from tdenginewriter/src/test/resources/o2t-1.json
rename to tdengine20writer/src/test/resources/o2t-1.json
index 11264c98..05ba4fc9 100644
--- a/tdenginewriter/src/test/resources/o2t-1.json
+++ b/tdengine20writer/src/test/resources/o2t-1.json
@@ -11,7 +11,7 @@
}
},
"writer": {
- "name": "tdenginewriter",
+ "name": "tdengine20writer",
"parameter": {
"username": "root",
"password": "taosdata",
diff --git a/tdengine20writer/src/test/resources/t2t-1.json b/tdengine20writer/src/test/resources/t2t-1.json
new file mode 100644
index 00000000..6d92a381
--- /dev/null
+++ b/tdengine20writer/src/test/resources/t2t-1.json
@@ -0,0 +1,94 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine20reader",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "table": [
+ "stb1"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/db1?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "column": [
+ "tbname",
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "beginDateTime": "2022-02-15 00:00:00",
+ "endDateTime": "2022-02-16 00:00:00",
+ "splitInterval": "1d"
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "tbname",
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "connection": [
+ {
+ "table": [
+ "stb2"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.1.93:6041/db2?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdengine20writer/src/test/resources/t2t-2.json b/tdengine20writer/src/test/resources/t2t-2.json
new file mode 100644
index 00000000..4f897aab
--- /dev/null
+++ b/tdengine20writer/src/test/resources/t2t-2.json
@@ -0,0 +1,92 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine20reader",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "table": [
+ "stb1"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/db1?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "beginDateTime": "2022-02-15 00:00:00",
+ "endDateTime": "2022-02-16 00:00:00",
+ "splitInterval": "1d"
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "connection": [
+ {
+ "table": [
+ "stb2"
+ ],
+ "jdbcUrl": "jdbc:TAOS://192.168.1.93:6030/db2"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdengine20writer/src/test/resources/t2t-3.json b/tdengine20writer/src/test/resources/t2t-3.json
new file mode 100644
index 00000000..0a309829
--- /dev/null
+++ b/tdengine20writer/src/test/resources/t2t-3.json
@@ -0,0 +1,92 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine20reader",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "table": [
+ "stb1"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/db1?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "beginDateTime": "2022-02-15 00:00:00",
+ "endDateTime": "2022-02-16 00:00:00",
+ "splitInterval": "1d"
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "t1",
+ "t2",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "t8",
+ "t9",
+ "t10"
+ ],
+ "connection": [
+ {
+ "table": [
+ "t1"
+ ],
+ "jdbcUrl": "jdbc:TAOS://192.168.1.93:6030/db2?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdengine20writer/src/test/resources/t2t-4.json b/tdengine20writer/src/test/resources/t2t-4.json
new file mode 100644
index 00000000..304626a1
--- /dev/null
+++ b/tdengine20writer/src/test/resources/t2t-4.json
@@ -0,0 +1,72 @@
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine20reader",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "table": [
+ "stb1"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.56.105:6041/db1?timestampFormat=TIMESTAMP"
+ }
+ ],
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9"
+ ],
+ "beginDateTime": "2022-02-15 00:00:00",
+ "endDateTime": "2022-02-16 00:00:00",
+ "splitInterval": "1d"
+ }
+ },
+ "writer": {
+ "name": "tdengine20writer",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "column": [
+ "ts",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9"
+ ],
+ "connection": [
+ {
+ "table": [
+ "weather"
+ ],
+ "jdbcUrl": "jdbc:TAOS-RS://192.168.1.93:6041/db2"
+ }
+ ],
+ "batchSize": 1000,
+ "ignoreTagsUnmatched": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tdenginewriter/src/test/resources/weather.csv b/tdengine20writer/src/test/resources/weather.csv
similarity index 100%
rename from tdenginewriter/src/test/resources/weather.csv
rename to tdengine20writer/src/test/resources/weather.csv
diff --git a/tdengine30reader/doc/tdengine30reader-CN.md b/tdengine30reader/doc/tdengine30reader-CN.md
new file mode 100644
index 00000000..8e8b70da
--- /dev/null
+++ b/tdengine30reader/doc/tdengine30reader-CN.md
@@ -0,0 +1,195 @@
+# DataX TDengineReader
+
+## 1 快速介绍
+
+TDengineReader 插件实现了 TDengine 读取数据的功能。
+
+## 2 实现原理
+
+TDengineReader 通过 TDengine 的 JDBC driver 查询获取数据。
+
+## 3 功能说明
+
+### 3.1 配置样例
+
+* 配置一个从 TDengine 抽取数据作业:
+
+```json
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine30reader",
+ "parameter": {
+ "username": "root",
+ "password": "taosdata",
+ "connection": [
+ {
+ "table": [
+ "meters"
+ ],
+ "jdbcUrl": [
+ "jdbc:TAOS-RS://192.168.56.105:6041/test?timestampFormat=TIMESTAMP"
+ ]
+ }
+ ],
+ "column": [
+ "ts",
+ "current",
+ "voltage",
+ "phase"
+ ],
+ "where": "ts>=0",
+ "beginDateTime": "2017-07-14 10:40:00",
+ "endDateTime": "2017-08-14 10:40:00"
+ }
+ },
+ "writer": {
+ "name": "streamwriter",
+ "parameter": {
+ "encoding": "UTF-8",
+ "print": true
+ }
+ }
+ }
+ ],
+ "setting": {
+ "speed": {
+ "channel": 1
+ }
+ }
+ }
+}
+```
+
+* 配置一个自定义 SQL 的数据抽取作业:
+
+```json
+{
+ "job": {
+ "content": [
+ {
+ "reader": {
+ "name": "tdengine30reader",
+ "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 实例的用户名
+ * 必选:是
+ * 默认值:无
+* **password**
+ * 描述:TDengine 实例的密码
+ * 必选:是
+ * 默认值:无
+* **jdbcUrl**
+ * 描述: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
+ * 必选:否
+ * 默认值:无
+* **endDateTime**
+ * 描述:数据的结束时间,Job 迁移从 begineDateTime 到 endDateTime 的数据,格式为 yyyy-MM-dd HH:mm:ss
+ * 必选:否
+ * 默认值:无
+
+### 3.3 类型转换
+
+| TDengine 数据类型 | DataX 内部类型 |
+| --------------- | ------------- |
+| TINYINT | Long |
+| SMALLINT | Long |
+| INTEGER | Long |
+| BIGINT | Long |
+| FLOAT | Double |
+| DOUBLE | Double |
+| BOOLEAN | Bool |
+| TIMESTAMP | Date |
+| BINARY | Bytes |
+| NCHAR | String |
+
+## 4 性能报告
+
+### 4.1 环境准备
+
+#### 4.1.1 数据特征
+
+#### 4.1.2 机器参数
+
+#### 4.1.3 DataX jvm 参数
+
+ -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
+
+### 4.2 测试报告
+
+#### 4.2.1 单表测试报告
+
+| 通道数| DataX速度(Rec/s)|DataX流量(MB/s)| DataX机器网卡流出流量(MB/s)|DataX机器运行负载|DB网卡进入流量(MB/s)|DB运行负载|DB TPS|
+|--------| --------|--------|--------|--------|--------|--------|--------|
+|1| | | | | | | |
+|4| | | | | | | |
+|8| | | | | | | |
+|16| | | | | | | |
+|32| | | | | | | |
+
+说明:
+
+#### 4.2.4 性能测试小结
+
+1.
+2.
+
+## 5 约束限制
+
+## FAQ
\ No newline at end of file
diff --git a/tdenginereader/pom.xml b/tdengine30reader/pom.xml
similarity index 95%
rename from tdenginereader/pom.xml
rename to tdengine30reader/pom.xml
index 075a2789..5754fb2d 100644
--- a/tdenginereader/pom.xml
+++ b/tdengine30reader/pom.xml
@@ -9,7 +9,7 @@
4.0.0
- tdenginereader
+ tdengine30reader
8
@@ -28,20 +28,17 @@
-
- com.alibaba.datax.tdenginewriter
- tdenginewriter
+ com.alibaba.datax.tdengine30writer
+ tdengine30writer
0.0.1-SNAPSHOT
compile
-
com.taosdata.jdbc
taos-jdbcdriver
- 2.0.39
+ 3.2.9
-
junit
junit
diff --git a/tdengine30reader/src/main/assembly/package.xml b/tdengine30reader/src/main/assembly/package.xml
new file mode 100755
index 00000000..888eb2ec
--- /dev/null
+++ b/tdengine30reader/src/main/assembly/package.xml
@@ -0,0 +1,34 @@
+
+
+
+ dir
+
+ false
+
+
+ src/main/resources
+
+ plugin.json
+ plugin_job_template.json
+
+ plugin/reader/tdengine30reader
+
+
+ target/
+
+ tdengine30reader-0.0.1-SNAPSHOT.jar
+
+ plugin/reader/tdengine30reader
+
+
+
+
+
+ false
+ plugin/reader/tdengine30reader/libs
+ runtime
+
+
+
diff --git a/tdengine30reader/src/main/java/com/alibaba/datax/plugin/tdengine30reader/TDengineReader.java b/tdengine30reader/src/main/java/com/alibaba/datax/plugin/tdengine30reader/TDengineReader.java
new file mode 100644
index 00000000..3dffed01
--- /dev/null
+++ b/tdengine30reader/src/main/java/com/alibaba/datax/plugin/tdengine30reader/TDengineReader.java
@@ -0,0 +1,266 @@
+package com.alibaba.datax.plugin.tdengine30reader;
+
+import com.alibaba.datax.common.element.*;
+import com.alibaba.datax.common.element.Record;
+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.writer.tdengine30writer.Key;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.UnsupportedEncodingException;
+import java.sql.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+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 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.");
+
+ // check connection
+ List connectionList = this.originalConfig.getListConfiguration(Key.CONNECTION);
+ if (connectionList == null || connectionList.isEmpty())
+ throw DataXException.asDataXException(TDengineReaderErrorCode.REQUIRED_VALUE,
+ "The parameter [" + Key.CONNECTION + "] is not set.");
+ for (int i = 0; i < connectionList.size(); i++) {
+ Configuration conn = connectionList.get(i);
+ // check jdbcUrl
+ List