diff --git a/plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java b/plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java index 1b46a8bc..e33ea1a6 100755 --- a/plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java +++ b/plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java @@ -25,7 +25,9 @@ public enum DataBaseType { Oscar("oscar", "com.oscar.Driver"), OceanBase("oceanbase", "com.alipay.oceanbase.jdbc.Driver"), StarRocks("starrocks", "com.mysql.jdbc.Driver"), - Databend("databend", "com.databend.jdbc.DatabendDriver"); + Databend("databend", "com.databend.jdbc.DatabendDriver"), + Sybase("sybase", "com.sybase.jdbc4.jdbc.SybDriver"); + private String typeName; private String driverClassName; diff --git a/sybasereader/doc/sybasereader.md b/sybasereader/doc/sybasereader.md index 32851e52..54156706 100644 --- a/sybasereader/doc/sybasereader.md +++ b/sybasereader/doc/sybasereader.md @@ -233,12 +233,12 @@ SybaseReader插件实现了从Sybase读取数据。在底层实现上,SybaseRe | DataX 内部类型| Sybase 数据类型 | | -------- | ----- | -| Long |NUMBER,INTEGER,INT,SMALLINT| -| Double |NUMERIC,DECIMAL,FLOAT,DOUBLE PRECISION,REAL| -| String |LONG,CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2,CLOB,NCLOB,CHARACTER,CHARACTER VARYING,CHAR VARYING,NATIONAL CHARACTER,NATIONAL CHAR,NATIONAL CHARACTER VARYING,NATIONAL CHAR VARYING,NCHAR VARYING | -| Date |TIMESTAMP,DATE | -| Boolean |bit, bool | -| Bytes |BLOB,BFILE,RAW,LONG RAW | +| Long |Tinyint,Smallint,Int,Money,Smallmoney| +| Double |Float,Real,Numeric,Decimal| +| String |Char,Varchar,Nchar,Nvarchar,Text| +| Date |Timestamp,Datetime,Smalldatetime| +| Boolean |bit, bool| +| Bytes |Binary,Varbinary,Image| diff --git a/sybasereader/pom.xml b/sybasereader/pom.xml new file mode 100644 index 00000000..1c826fb4 --- /dev/null +++ b/sybasereader/pom.xml @@ -0,0 +1,105 @@ + + + + datax-all + com.alibaba.datax + 0.0.1-SNAPSHOT + + 4.0.0 + + sybasereader + sybasereader + jar + + + 8 + 8 + + + + + com.alibaba.datax + datax-common + ${datax-project-version} + + + slf4j-log4j12 + org.slf4j + + + + + org.slf4j + slf4j-api + + + ch.qos.logback + logback-classic + + + + com.alibaba.datax + plugin-rdbms-util + ${datax-project-version} + + + + com.oracle + ojdbc6 + 11.2.0.3 + + + com.alibaba.datax + datax-common + 0.0.1-SNAPSHOT + compile + + + + com.sybase.jconnect + jconn4 + 16.0 + system + ${project.basedir}/libs/jconn4-16.0.jar + + + + + + + + + + maven-compiler-plugin + + ${jdk-version} + ${jdk-version} + ${project-sourceEncoding} + + + + + maven-assembly-plugin + + + src/main/assembly/package.xml + + datax + + + + dwzip + package + + single + + + + + + + + + \ No newline at end of file diff --git a/sybasereader/src/main/assembly/package.xml b/sybasereader/src/main/assembly/package.xml new file mode 100755 index 00000000..a954a30d --- /dev/null +++ b/sybasereader/src/main/assembly/package.xml @@ -0,0 +1,35 @@ + + + + dir + + false + + + src/main/resources + + plugin.json + plugin_job_template.json + + plugin/reader/oraclereader + + + target/ + + oraclereader-0.0.1-SNAPSHOT.jar + + plugin/reader/oraclereader + + + + + + false + plugin/reader/oraclereader/libs + runtime + + + diff --git a/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/Constants.java b/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/Constants.java new file mode 100755 index 00000000..2de97644 --- /dev/null +++ b/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/Constants.java @@ -0,0 +1,7 @@ +package com.alibaba.datax.plugin.reader.sybasereader; + +public class Constants { + + public static final int DEFAULT_FETCH_SIZE = 1024; + +} diff --git a/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/SybaseReader.java b/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/SybaseReader.java new file mode 100755 index 00000000..d0bbefac --- /dev/null +++ b/sybasereader/src/main/java/com/alibaba/datax/plugin/reader/sybasereader/SybaseReader.java @@ -0,0 +1,107 @@ +package com.alibaba.datax.plugin.reader.sybasereader; + +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 org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader; +import com.alibaba.datax.plugin.rdbms.reader.Constant; + + +public class SybaseReader extends Reader { + + private static final DataBaseType DATABASE_TYPE = DataBaseType.Oracle; + + public static class Job extends Reader.Job { + private static final Logger LOG = LoggerFactory + .getLogger(SybaseReader.Job.class); + + private Configuration originalConfig = null; + private CommonRdbmsReader.Job commonRdbmsReaderJob; + + @Override + public void init() { + this.originalConfig = super.getPluginJobConf(); + + dealFetchSize(this.originalConfig); + + this.commonRdbmsReaderJob = new CommonRdbmsReader.Job( + DATABASE_TYPE); + this.commonRdbmsReaderJob.init(this.originalConfig); + + } + + @Override + public void preCheck(){ + init(); + this.commonRdbmsReaderJob.preCheck(this.originalConfig,DATABASE_TYPE); + } + + @Override + public List split(int adviceNumber) { + return this.commonRdbmsReaderJob.split(this.originalConfig, + adviceNumber); + } + + @Override + public void post() { + this.commonRdbmsReaderJob.post(this.originalConfig); + } + + @Override + public void destroy() { + this.commonRdbmsReaderJob.destroy(this.originalConfig); + } + + private void dealFetchSize(Configuration originalConfig) { + int fetchSize = originalConfig.getInt( + com.alibaba.datax.plugin.rdbms.reader.Constant.FETCH_SIZE, + Constants.DEFAULT_FETCH_SIZE); + if (fetchSize < 1) { + } + originalConfig.set( + com.alibaba.datax.plugin.rdbms.reader.Constant.FETCH_SIZE, + fetchSize); + } + } + + public static class Task extends Reader.Task { + + private Configuration readerSliceConfig; + private CommonRdbmsReader.Task commonRdbmsReaderTask; + + @Override + public void init() { + this.readerSliceConfig = super.getPluginJobConf(); + this.commonRdbmsReaderTask = new CommonRdbmsReader.Task( + DATABASE_TYPE ,super.getTaskGroupId(), super.getTaskId()); + this.commonRdbmsReaderTask.init(this.readerSliceConfig); + } + + @Override + public void startRead(RecordSender recordSender) { + int fetchSize = this.readerSliceConfig + .getInt(com.alibaba.datax.plugin.rdbms.reader.Constant.FETCH_SIZE); + + this.commonRdbmsReaderTask.startRead(this.readerSliceConfig, + recordSender, super.getTaskPluginCollector(), fetchSize); + } + + @Override + public void post() { + this.commonRdbmsReaderTask.post(this.readerSliceConfig); + } + + @Override + public void destroy() { + this.commonRdbmsReaderTask.destroy(this.readerSliceConfig); + } + + } + +} diff --git a/sybasereader/src/main/resources/plugin.json b/sybasereader/src/main/resources/plugin.json new file mode 100755 index 00000000..39dd61d7 --- /dev/null +++ b/sybasereader/src/main/resources/plugin.json @@ -0,0 +1,6 @@ +{ + "name": "sybasereader", + "class": "com.alibaba.datax.plugin.reader.sybasereader.SybaseReader", + "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" +} \ No newline at end of file diff --git a/sybasereader/src/main/resources/plugin_job_template.json b/sybasereader/src/main/resources/plugin_job_template.json new file mode 100644 index 00000000..5d5a1f45 --- /dev/null +++ b/sybasereader/src/main/resources/plugin_job_template.json @@ -0,0 +1,14 @@ +{ + "name": "sybasereader", + "parameter": { + "username": "", + "password": "", + "column": [], + "connection": [ + { + "table": [], + "jdbcUrl": [] + } + ] + } +} \ No newline at end of file diff --git a/sybasewriter/pom.xml b/sybasewriter/pom.xml new file mode 100644 index 00000000..f077f52d --- /dev/null +++ b/sybasewriter/pom.xml @@ -0,0 +1,19 @@ + + + + datax-all + com.alibaba.datax + 0.0.1-SNAPSHOT + + 4.0.0 + + sybasewriter + + + 8 + 8 + + + \ No newline at end of file