diff --git a/oscarwriter/pom.xml b/oscarwriter/pom.xml new file mode 100644 index 00000000..51643c76 --- /dev/null +++ b/oscarwriter/pom.xml @@ -0,0 +1,84 @@ + + + + datax-all + com.alibaba.datax + 0.0.1-SNAPSHOT + + 4.0.0 + oscarwriter + oscarwriter + jar + writer data into oscar database + + + + 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.oscar + oscar + 7.0.8 + system + ${basedir}/src/main/lib/oscarJDBC.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/oscarwriter/src/main/assembly/package.xml b/oscarwriter/src/main/assembly/package.xml new file mode 100644 index 00000000..2401372e --- /dev/null +++ b/oscarwriter/src/main/assembly/package.xml @@ -0,0 +1,42 @@ + + + + dir + + false + + + src/main/resources + + plugin.json + plugin_job_template.json + + plugin/writer/oscarwriter + + + src/main/lib + + oscarJDBC.jar + + plugin/writer/oscarwriter/libs + + + target/ + + oscarwriter-0.0.1-SNAPSHOT.jar + + plugin/writer/oscarwriter + + + + + + false + plugin/writer/oscarwriter/libs + runtime + + + diff --git a/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriter.java b/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriter.java new file mode 100644 index 00000000..0602bb44 --- /dev/null +++ b/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriter.java @@ -0,0 +1,90 @@ +package com.alibaba.datax.plugin.writer.oscarwriter; + +import com.alibaba.datax.common.plugin.RecordReceiver; +import com.alibaba.datax.common.spi.Writer; +import com.alibaba.datax.common.util.Configuration; +import com.alibaba.datax.plugin.rdbms.util.DataBaseType; +import com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter; + +import java.util.List; + +public class OscarWriter extends Writer { + private static final DataBaseType DATABASE_TYPE = DataBaseType.Oscar; + + public static class Job extends Writer.Job { + private Configuration originalConfig = null; + private CommonRdbmsWriter.Job commonRdbmsWriterJob; + + @Override + public void preCheck() { + this.init(); + this.commonRdbmsWriterJob.writerPreCheck(this.originalConfig, DATABASE_TYPE); + } + + @Override + public void init() { + this.originalConfig = super.getPluginJobConf(); + + this.commonRdbmsWriterJob = new CommonRdbmsWriter.Job( + DATABASE_TYPE); + this.commonRdbmsWriterJob.init(this.originalConfig); + } + + @Override + public void prepare() { + this.commonRdbmsWriterJob.prepare(this.originalConfig); + } + + @Override + public List split(int mandatoryNumber) { + return this.commonRdbmsWriterJob.split(this.originalConfig, + mandatoryNumber); + } + + @Override + public void post() { + this.commonRdbmsWriterJob.post(this.originalConfig); + } + + @Override + public void destroy() { + this.commonRdbmsWriterJob.destroy(this.originalConfig); + } + + } + + public static class Task extends Writer.Task { + private Configuration writerSliceConfig; + private CommonRdbmsWriter.Task commonRdbmsWriterTask; + + @Override + public void init() { + this.writerSliceConfig = super.getPluginJobConf(); + this.commonRdbmsWriterTask = new CommonRdbmsWriter.Task(DATABASE_TYPE); + this.commonRdbmsWriterTask.init(this.writerSliceConfig); + } + + @Override + public void prepare() { + this.commonRdbmsWriterTask.prepare(this.writerSliceConfig); + } + + @Override + public void startWrite(RecordReceiver recordReceiver) { + this.commonRdbmsWriterTask.startWrite(recordReceiver, + this.writerSliceConfig, super.getTaskPluginCollector()); + } + + @Override + public void post() { + this.commonRdbmsWriterTask.post(this.writerSliceConfig); + } + + @Override + public void destroy() { + this.commonRdbmsWriterTask.destroy(this.writerSliceConfig); + } + + } + +} diff --git a/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriterErrorCode.java b/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriterErrorCode.java new file mode 100644 index 00000000..7ae21576 --- /dev/null +++ b/oscarwriter/src/main/java/com/alibaba/datax/plugin/writer/oscarwriter/OscarWriterErrorCode.java @@ -0,0 +1,31 @@ +package com.alibaba.datax.plugin.writer.oscarwriter; + +import com.alibaba.datax.common.spi.ErrorCode; + +public enum OscarWriterErrorCode implements ErrorCode { + ; + + private final String code; + private final String describe; + + private OscarWriterErrorCode(String code, String describe) { + this.code = code; + this.describe = describe; + } + + @Override + public String getCode() { + return this.code; + } + + @Override + public String getDescription() { + return this.describe; + } + + @Override + public String toString() { + return String.format("Code:[%s], Describe:[%s]. ", this.code, + this.describe); + } +} diff --git a/oscarwriter/src/main/resources/plugin.json b/oscarwriter/src/main/resources/plugin.json new file mode 100644 index 00000000..f1a99fec --- /dev/null +++ b/oscarwriter/src/main/resources/plugin.json @@ -0,0 +1,6 @@ +{ + "name": "oscarwriter", + "class": "com.alibaba.datax.plugin.writer.oscarwriter.OscarWriter", + "description": "useScene: prod. mechanism: Jdbc connection using the database, execute insert sql. warn: The more you know about the database, the less problems you encounter.", + "developer": "linjiayu" +} \ No newline at end of file diff --git a/oscarwriter/src/main/resources/plugin_job_template.json b/oscarwriter/src/main/resources/plugin_job_template.json new file mode 100644 index 00000000..3c5e0707 --- /dev/null +++ b/oscarwriter/src/main/resources/plugin_job_template.json @@ -0,0 +1,15 @@ +{ + "name": "oscarwriter", + "parameter": { + "username": "", + "password": "", + "column": [], + "preSql": [], + "connection": [ + { + "jdbcUrl": "", + "table": [] + } + ] + } +} \ No newline at end of file diff --git a/package.xml b/package.xml index 2323ce18..49e3c4ec 100755 --- a/package.xml +++ b/package.xml @@ -378,5 +378,12 @@ datax + + oscarwriter/target/datax/ + + **/*.* + + datax + 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 eb82aa44..b6b8140c 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 @@ -20,7 +20,8 @@ public enum DataBaseType { DB2("db2", "com.ibm.db2.jcc.DB2Driver"), ADS("ads","com.mysql.jdbc.Driver"), ClickHouse("clickhouse", "ru.yandex.clickhouse.ClickHouseDriver"), - KingbaseES("kingbasees", "com.kingbase8.Driver"); + KingbaseES("kingbasees", "com.kingbase8.Driver"), + Oscar("oscar", "com.oscar.Driver"); private String typeName; @@ -55,13 +56,15 @@ public enum DataBaseType { case DB2: break; case PostgreSQL: - break; + break; case ClickHouse: break; case RDBMS: break; case KingbaseES: break; + case Oscar: + break; default: throw DataXException.asDataXException(DBUtilErrorCode.UNSUPPORTED_TYPE, "unsupported database type."); } @@ -96,13 +99,15 @@ public enum DataBaseType { case DB2: break; case PostgreSQL: - break; + break; case ClickHouse: break; case RDBMS: break; case KingbaseES: break; + case Oscar: + break; default: throw DataXException.asDataXException(DBUtilErrorCode.UNSUPPORTED_TYPE, "unsupported database type."); } @@ -128,7 +133,8 @@ public enum DataBaseType { case DB2: case PostgreSQL: case KingbaseES: - break; + case Oscar: + break; default: throw DataXException.asDataXException(DBUtilErrorCode.UNSUPPORTED_TYPE, "unsupported database type."); } @@ -152,6 +158,7 @@ public enum DataBaseType { case DB2: case PostgreSQL: case KingbaseES: + case Oscar: break; default: throw DataXException.asDataXException(DBUtilErrorCode.UNSUPPORTED_TYPE, "unsupported database type"); @@ -177,6 +184,8 @@ public enum DataBaseType { break; case KingbaseES: break; + case Oscar: + break; default: throw DataXException.asDataXException(DBUtilErrorCode.UNSUPPORTED_TYPE, "unsupported database type"); } diff --git a/pom.xml b/pom.xml index f2874904..8f3b827e 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,7 @@ gdbwriter cassandrawriter clickhousewriter + oscarwriter plugin-rdbms-util plugin-unstructured-storage-util