Skip to main content
Version: 2.3.3

OceanBase

JDBC OceanBase Source Connector

Support Those Engines​

Spark
Flink
SeaTunnel Zeta

Key Features​

Description​

Read external data source data through JDBC.

Supported DataSource Info​

DatasourceSupported versionsDriverUrlMaven
OceanBaseAll OceanBase server versions.com.oceanbase.jdbc.Driverjdbc:oceanbase://localhost:2883/testDownload

Database Dependency​

Please download the support list corresponding to 'Maven' and copy it to the '$SEATNUNNEL_HOME/plugins/jdbc/lib/' working directory
For example: cp oceanbase-client-xxx.jar $SEATNUNNEL_HOME/plugins/jdbc/lib/

Data Type Mapping​

Mysql Mode​

Mysql Data typeSeaTunnel Data type
BIT(1)
INT UNSIGNED
BOOLEAN
TINYINT
TINYINT UNSIGNED
SMALLINT
SMALLINT UNSIGNED
MEDIUMINT
MEDIUMINT UNSIGNED
INT
INTEGER
YEAR
INT
INT UNSIGNED
INTEGER UNSIGNED
BIGINT
BIGINT
BIGINT UNSIGNEDDECIMAL(20,0)
DECIMAL(x,y)(Get the designated column's specified column size.<38)DECIMAL(x,y)
DECIMAL(x,y)(Get the designated column's specified column size.>38)DECIMAL(38,18)
DECIMAL UNSIGNEDDECIMAL((Get the designated column's specified column size)+1,
(Gets the designated column's number of digits to right of the decimal point.)))
FLOAT
FLOAT UNSIGNED
FLOAT
DOUBLE
DOUBLE UNSIGNED
DOUBLE
CHAR
VARCHAR
TINYTEXT
MEDIUMTEXT
TEXT
LONGTEXT
JSON
STRING
DATEDATE
TIMETIME
DATETIME
TIMESTAMP
TIMESTAMP
TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB
BINARY
VARBINAR
BIT(n)
BYTES
GEOMETRY
UNKNOWN
Not supported yet

Oracle Mode​

Oracle Data typeSeaTunnel Data type
Number(p), p <= 9INT
Number(p), p <= 18BIGINT
Number(p), p > 18DECIMAL(38,18)
REAL
BINARY_FLOAT
FLOAT
BINARY_DOUBLEDOUBLE
CHAR
NCHAR
NVARCHAR2
NCLOB
CLOB
ROWID
STRING
DATEDATE
TIMESTAMP
TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP
BLOB
RAW
LONG RAW
BFILE
BYTES
UNKNOWNNot supported yet

Source Options​

NameTypeRequiredDefaultDescription
urlStringYes-The URL of the JDBC connection. Refer to a case: jdbc:oceanbase://localhost:2883/test
driverStringYes-The jdbc class name used to connect to the remote data source, should be com.oceanbase.jdbc.Driver.
userStringNo-Connection instance user name
passwordStringNo-Connection instance password
compatible_modeStringYes-The compatible mode of OceanBase, can be 'mysql' or 'oracle'.
queryStringYes-Query statement
connection_check_timeout_secIntNo30The time in seconds to wait for the database operation used to validate the connection to complete
partition_columnStringNo-The column name for parallelism's partition, only support numeric type column and string type column.
partition_lower_boundBigDecimalNo-The partition_column min value for scan, if not set SeaTunnel will query database get min value.
partition_upper_boundBigDecimalNo-The partition_column max value for scan, if not set SeaTunnel will query database get max value.
partition_numIntNojob parallelismThe number of partition count, only support positive integer. Default value is job parallelism.
fetch_sizeIntNo0For queries that return a large number of objects, you can configure
the row fetch size used in the query to improve performance by
reducing the number database hits required to satisfy the selection criteria.
Zero means use jdbc default value.
common-optionsNo-Source plugin common parameters, please refer to Source Common Options for details

Tips​

If partition_column is not set, it will run in single concurrency, and if partition_column is set, it will be executed in parallel according to the concurrency of tasks.

Task Example​

Simple:​

env {
execution.parallelism = 2
job.mode = "BATCH"
}

source {
Jdbc {
driver = "com.oceanbase.jdbc.Driver"
url = "jdbc:oceanbase://localhost:2883/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"
user = "root"
password = ""
compatible_mode = "mysql"
query = "select * from source"
}
}

transform {
# If you would like to get more information about how to configure seatunnel and see full list of transform plugins,
# please go to https://seatunnel.apache.org/docs/transform/sql
}

sink {
Console {}
}

Parallel:​

Read your query table in parallel with the shard field you configured and the shard data. You can do this if you want to read the whole table

source {
Jdbc {
driver = "com.oceanbase.jdbc.Driver"
url = "jdbc:oceanbase://localhost:2883/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"
user = "root"
password = ""
compatible_mode = "mysql"
query = "select * from source"
# Parallel sharding reads fields
partition_column = "id"
# Number of fragments
partition_num = 10
}
}

Parallel Boundary:​

It is more efficient to read your data source according to the upper and lower boundaries you configured

source {
Jdbc {
driver = "com.oceanbase.jdbc.Driver"
url = "jdbc:oceanbase://localhost:2883/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"
user = "root"
password = ""
compatible_mode = "mysql"
query = "select * from source"
partition_column = "id"
partition_num = 10
# Read start boundary
partition_lower_bound = 1
# Read end boundary
partition_upper_bound = 500
}
}