This is an automated email from the ASF dual-hosted git repository.
gaojun2048 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 3a095d30f [Feature][Connector-V2][Teradata] Add Teradata Source And
Sink Connector
3a095d30f is described below
commit 3a095d30fd4476e212889cf6c8d3ac18e871c179
Author: FWLamb <[email protected]>
AuthorDate: Mon Nov 28 20:21:09 2022 +0800
[Feature][Connector-V2][Teradata] Add Teradata Source And Sink Connector
---
docs/en/connector-v2/sink/Jdbc.md | 5 +-
docs/en/connector-v2/source/Jdbc.md | 2 +
seatunnel-connectors-v2/connector-jdbc/pom.xml | 13 +++
.../internal/dialect/teradata/TeradataDialect.java | 47 +++++++++++
.../dialect/teradata/TeradataDialectFactory.java | 37 ++++++++
.../dialect/teradata/TeradataJdbcRowConverter.java | 29 +++++++
.../dialect/teradata/TeradataTypeMapper.java | 98 ++++++++++++++++++++++
.../connector-jdbc-e2e/pom.xml | 5 ++
.../connectors/seatunnel/jdbc/JdbcTeradataIT.java | 86 +++++++++++++++++++
.../resources/jdbc_teradata_source_and_sink.conf | 77 +++++++++++++++++
10 files changed, 398 insertions(+), 1 deletion(-)
diff --git a/docs/en/connector-v2/sink/Jdbc.md
b/docs/en/connector-v2/sink/Jdbc.md
index af586d5ec..952521509 100644
--- a/docs/en/connector-v2/sink/Jdbc.md
+++ b/docs/en/connector-v2/sink/Jdbc.md
@@ -132,6 +132,7 @@ there are some reference value for params above.
| GBase8a | com.gbase.jdbc.Driver |
jdbc:gbase://e2e_gbase8aDb:5258/test | /
|
https://www.gbase8.cn/wp-content/uploads/2020/10/gbase-connector-java-8.3.81.53-build55.5.7-bin_min_mix.jar
|
| StarRocks | com.mysql.cj.jdbc.Driver |
jdbc:mysql://localhost:3306/test | /
|
https://mvnrepository.com/artifact/mysql/mysql-connector-java
|
| db2 | com.ibm.db2.jcc.DB2Driver |
jdbc:db2://localhost:50000/testdb |
com.ibm.db2.jcc.DB2XADataSource |
https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc/db2jcc4
|
+| teradata | com.teradata.jdbc.TeraDriver |
jdbc:teradata://localhost/DBS_PORT=1025,DATABASE=test | /
|
https://mvnrepository.com/artifact/com.teradata.jdbc/terajdbc
|
## Example
@@ -200,5 +201,7 @@ sink {
### next version
+- [Feature] Support CDC write DELETE/UPDATE/INSERT events
([3378](https://github.com/apache/incubator-seatunnel/issues/3378))
+- [Feature] Support Teradata JDBC Sink
([3362](https://github.com/apache/incubator-seatunnel/pull/3362))
- [Feature] Support Sqlite JDBC Sink
([3089](https://github.com/apache/incubator-seatunnel/pull/3089))
-- [Feature] Support CDC write DELETE/UPDATE/INSERT events
([3378](https://github.com/apache/incubator-seatunnel/issues/3378))
\ No newline at end of file
+- [Feature] Support CDC write DELETE/UPDATE/INSERT events
([3378](https://github.com/apache/incubator-seatunnel/issues/3378))
diff --git a/docs/en/connector-v2/source/Jdbc.md
b/docs/en/connector-v2/source/Jdbc.md
index e6c1c08a9..742ba48fd 100644
--- a/docs/en/connector-v2/source/Jdbc.md
+++ b/docs/en/connector-v2/source/Jdbc.md
@@ -109,6 +109,7 @@ there are some reference value for params above.
| starrocks | com.mysql.cj.jdbc.Driver |
jdbc:mysql://localhost:3306/test |
https://mvnrepository.com/artifact/mysql/mysql-connector-java
|
| db2 | com.ibm.db2.jcc.DB2Driver |
jdbc:db2://localhost:50000/testdb |
https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc/db2jcc4
|
| tablestore | com.alicloud.openservices.tablestore.jdbc.OTSDriver |
"jdbc:ots:http s://myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance" |
https://mvnrepository.com/artifact/com.aliyun.openservices/tablestore-jdbc
|
+| teradata | com.teradata.jdbc.TeraDriver |
jdbc:teradata://localhost/DBS_PORT=1025,DATABASE=test |
https://mvnrepository.com/artifact/com.teradata.jdbc/terajdbc
|
## Example
@@ -159,4 +160,5 @@ parallel:
- [BugFix] Fix jdbc split bug
([3220](https://github.com/apache/incubator-seatunnel/pull/3220))
- [Feature] Support Sqlite JDBC Source
([3089](https://github.com/apache/incubator-seatunnel/pull/3089))
- [Feature] Support Tablestore Source
([3309](https://github.com/apache/incubator-seatunnel/pull/3309))
+- [Feature] Support Teradata JDBC Source
([3362](https://github.com/apache/incubator-seatunnel/pull/3362))
- [Feature] Support JDBC Fetch Size Config
([3478](https://github.com/apache/incubator-seatunnel/pull/3478))
diff --git a/seatunnel-connectors-v2/connector-jdbc/pom.xml
b/seatunnel-connectors-v2/connector-jdbc/pom.xml
index b7f40e417..6857e9687 100644
--- a/seatunnel-connectors-v2/connector-jdbc/pom.xml
+++ b/seatunnel-connectors-v2/connector-jdbc/pom.xml
@@ -40,6 +40,7 @@
<db2.version>db2jcc4</db2.version>
<sqlite.version>3.39.3.0</sqlite.version>
<tablestore.version>5.13.9</tablestore.version>
+ <teradata.version>17.20.00.12</teradata.version>
</properties>
<dependencyManagement>
@@ -98,6 +99,14 @@
<version>${tablestore.version}</version>
<scope>provided</scope>
</dependency>
+
+ <dependency>
+ <groupId>com.teradata.jdbc</groupId>
+ <artifactId>terajdbc4</artifactId>
+ <version>${teradata.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
</dependencies>
</dependencyManagement>
@@ -147,6 +156,10 @@
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-jdbc</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.teradata.jdbc</groupId>
+ <artifactId>terajdbc4</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialect.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialect.java
new file mode 100644
index 000000000..d824d2ef0
--- /dev/null
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialect.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.teradata;
+
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.converter.JdbcRowConverter;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialect;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialectTypeMapper;
+
+import java.util.Optional;
+
+public class TeradataDialect implements JdbcDialect {
+
+ @Override
+ public String dialectName() {
+ return "Teradata";
+ }
+
+ @Override
+ public JdbcRowConverter getRowConverter() {
+ return new TeradataJdbcRowConverter();
+ }
+
+ @Override
+ public JdbcDialectTypeMapper getJdbcDialectTypeMapper() {
+ return new TeradataTypeMapper();
+ }
+
+ @Override
+ public Optional<String> getUpsertStatement(String tableName, String[]
fieldNames, String[] uniqueKeyFields) {
+ return Optional.empty();
+ }
+}
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialectFactory.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialectFactory.java
new file mode 100644
index 000000000..70a449286
--- /dev/null
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataDialectFactory.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.teradata;
+
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialect;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialectFactory;
+
+import com.google.auto.service.AutoService;
+
+@AutoService(JdbcDialectFactory.class)
+public class TeradataDialectFactory implements JdbcDialectFactory {
+
+ @Override
+ public boolean acceptsURL(String url) {
+ return url.startsWith("jdbc:teradata:");
+ }
+
+ @Override
+ public JdbcDialect create() {
+ return new TeradataDialect();
+ }
+}
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataJdbcRowConverter.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataJdbcRowConverter.java
new file mode 100644
index 000000000..8e5543eed
--- /dev/null
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataJdbcRowConverter.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.teradata;
+
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.converter.AbstractJdbcRowConverter;
+
+public class TeradataJdbcRowConverter extends AbstractJdbcRowConverter {
+
+ @Override
+ public String converterName() {
+ return "Teradata";
+ }
+
+}
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataTypeMapper.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataTypeMapper.java
new file mode 100644
index 000000000..97cd9940d
--- /dev/null
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/teradata/TeradataTypeMapper.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.teradata;
+
+import org.apache.seatunnel.api.table.type.BasicType;
+import org.apache.seatunnel.api.table.type.DecimalType;
+import org.apache.seatunnel.api.table.type.LocalTimeType;
+import org.apache.seatunnel.api.table.type.PrimitiveByteArrayType;
+import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
+import
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialectTypeMapper;
+
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+public class TeradataTypeMapper implements JdbcDialectTypeMapper {
+
+ // ============================data types=====================
+
+ // -------------------------number----------------------------
+ private static final String TERADATA_BYTEINT = "BYTEINT";
+ private static final String TERADATA_SMALLINT = "SMALLINT";
+ private static final String TERADATA_INTEGER = "INTEGER";
+ private static final String TERADATA_BIGINT = "BIGINT";
+ private static final String TERADATA_FLOAT = "FLOAT";
+ private static final String TERADATA_DECIMAL = "DECIMAL";
+
+ // -------------------------string----------------------------
+ private static final String TERADATA_CHAR = "CHAR";
+ private static final String TERADATA_VARCHAR = "VARCHAR";
+ private static final String TERADATA_CLOB = "CLOB";
+
+
+ // ---------------------------binary---------------------------
+ private static final String TERADATA_BYTE = "BYTE";
+ private static final String TERADATA_VARBYTE = "VARBYTE";
+
+ // ------------------------------time-------------------------
+ private static final String TERADATA_DATE = "DATE";
+ private static final String TERADATA_TIME = "TIME";
+ private static final String TERADATA_TIMESTAMP = "TIMESTAMP";
+
+ // ------------------------------blob-------------------------
+ private static final String TERADATA_BLOB = "BLOB";
+
+ @Override
+ public SeaTunnelDataType<?> mapping(ResultSetMetaData metadata, int
colIndex) throws SQLException {
+ String teradataType =
metadata.getColumnTypeName(colIndex).toUpperCase();
+ switch (teradataType) {
+ case TERADATA_BYTEINT:
+ return BasicType.BYTE_TYPE;
+ case TERADATA_SMALLINT:
+ return BasicType.SHORT_TYPE;
+ case TERADATA_INTEGER:
+ return BasicType.INT_TYPE;
+ case TERADATA_BIGINT:
+ return BasicType.LONG_TYPE;
+ case TERADATA_FLOAT:
+ return BasicType.FLOAT_TYPE;
+ case TERADATA_DECIMAL:
+ return new DecimalType(metadata.getPrecision(colIndex),
metadata.getScale(colIndex));
+ case TERADATA_CHAR:
+ case TERADATA_VARCHAR:
+ case TERADATA_CLOB:
+ return BasicType.STRING_TYPE;
+ case TERADATA_BYTE:
+ case TERADATA_VARBYTE:
+ case TERADATA_BLOB:
+ return PrimitiveByteArrayType.INSTANCE;
+ case TERADATA_DATE:
+ return LocalTimeType.LOCAL_DATE_TYPE;
+ case TERADATA_TIME:
+ return LocalTimeType.LOCAL_TIME_TYPE;
+ case TERADATA_TIMESTAMP:
+ return LocalTimeType.LOCAL_DATE_TIME_TYPE;
+ default:
+ final String jdbcColumnName = metadata.getColumnName(colIndex);
+ throw new UnsupportedOperationException(
+ String.format(
+ "Doesn't support TERADATA type '%s' on column '%s'
yet.",
+ teradataType, jdbcColumnName));
+ }
+ }
+}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/pom.xml
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/pom.xml
index 9504bb182..db554daf3 100644
--- a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/pom.xml
+++ b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/pom.xml
@@ -103,6 +103,11 @@
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.teradata.jdbc</groupId>
+ <artifactId>terajdbc4</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTeradataIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTeradataIT.java
new file mode 100644
index 000000000..df07b8b19
--- /dev/null
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTeradataIT.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.connectors.seatunnel.jdbc;
+
+import org.apache.seatunnel.e2e.common.TestResource;
+import org.apache.seatunnel.e2e.common.TestSuiteBase;
+import org.apache.seatunnel.e2e.common.container.ContainerExtendedFactory;
+import org.apache.seatunnel.e2e.common.container.TestContainer;
+
+import com.teradata.jdbc.TeraDataSource;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.TestTemplate;
+import org.testcontainers.containers.Container;
+
+import java.sql.Connection;
+import java.sql.Statement;
+
+@Disabled("Disabled because it needs user's personal teradata account to run
this test!")
+public class JdbcTeradataIT extends TestSuiteBase implements TestResource {
+ private static final String HOST = "1.2.3.4";
+ private static final String PORT = "1025";
+ private static final String USERNAME = "dbc";
+ private static final String PASSWORD = "dbc";
+ private static final String DATABASE = "test";
+ private static final String SINK_TABLE = "sink_table";
+ private static final String TERADATA_DRIVER_JAR =
"https://repo1.maven.org/maven2/com/teradata/jdbc/terajdbc4/17.20.00.12/terajdbc4-17.20.00.12.jar";
+ private final ContainerExtendedFactory extendedFactory = container -> {
+ container.execInContainer("bash", "-c", "mkdir -p
/tmp/seatunnel/plugins/Jdbc/lib && cd /tmp/seatunnel/plugins/Jdbc/lib && curl
-O " + TERADATA_DRIVER_JAR);
+ };
+
+ private Connection connection;
+
+ @TestTemplate
+ public void testTeradata(TestContainer container) throws Exception {
+ container.executeExtraCommands(extendedFactory);
+ Container.ExecResult execResult =
container.executeJob("/jdbc_teradata_source_and_sink.conf");
+ Assertions.assertEquals(0, execResult.getExitCode());
+ clearSinkTable();
+ }
+
+ private void clearSinkTable() {
+ try (Statement statement = connection.createStatement()) {
+ statement.execute(String.format("delete from %s", SINK_TABLE));
+ } catch (Exception e) {
+ throw new RuntimeException("Test teradata server failed!", e);
+ }
+ }
+
+ @BeforeAll
+ @Override
+ public void startUp() throws Exception {
+ TeraDataSource teraDataSource = new TeraDataSource();
+ teraDataSource.setDSName(HOST);
+ teraDataSource.setDbsPort(PORT);
+ teraDataSource.setUser(USERNAME);
+ teraDataSource.setPassword(PASSWORD);
+ teraDataSource.setDATABASE(DATABASE);
+ this.connection = teraDataSource.getConnection();
+ }
+
+ @AfterAll
+ @Override
+ public void tearDown() throws Exception {
+ if (connection != null) {
+ this.connection.close();
+ }
+ }
+}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/resources/jdbc_teradata_source_and_sink.conf
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/resources/jdbc_teradata_source_and_sink.conf
new file mode 100644
index 000000000..740822828
--- /dev/null
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/src/test/resources/jdbc_teradata_source_and_sink.conf
@@ -0,0 +1,77 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+env {
+ execution.parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ # This is a example source plugin **only for test and demonstrate the
feature source plugin**
+ Jdbc {
+ driver = com.teradata.jdbc.TeraDriver
+ url = "jdbc:teradata://1.2.3.4/DBS_PORT=1025,DATABASE=test,TYPE=FASTEXPORT"
+ user = "dbc"
+ password = "dbc"
+ query = """
+ select id,
+ c_byteint,
+ c_smallint,
+ c_integer,
+ c_bigint,
+ c_float,
+ c_decimal,
+ c_char,
+ c_varchar,
+ c_byte,
+ c_varbyte,
+ c_date,
+ c_timestamp
+ from source_table;
+ """
+ }
+ # If you would like to get more information about how to configure seatunnel
and see full list of source plugins,
+ # please go to https://seatunnel.apache.org/docs/connector-v2/source/Jdbc
+}
+
+sink {
+ Jdbc {
+ driver = com.teradata.jdbc.TeraDriver
+ url = "jdbc:teradata://1.2.3.4/DBS_PORT=1025,DATABASE=test,TYPE=FASTLOAD"
+ user = "dbc"
+ password = "dbc"
+ auto_commit = false
+ query = """
+ insert into sink_table(id,
+ c_byteint,
+ c_smallint,
+ c_integer,
+ c_bigint,
+ c_float,
+ c_decimal,
+ c_char,
+ c_varchar,
+ c_byte,
+ c_varbyte,
+ c_date,
+ c_timestamp)
+VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+"""
+ }
+ # If you would like to get more information about how to configure seatunnel
and see full list of sink plugins,
+ # please go to https://seatunnel.apache.org/docs/connector-v2/sink/Jdbc
+}