This is an automated email from the ASF dual-hosted git repository.
fanjia pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 6cf665fcb3 [Doc][Improve] support chinese
[docs/zh/connector-v2/sink/Oracle.md] (#8831)
6cf665fcb3 is described below
commit 6cf665fcb38d108504987eee863325b945baa798
Author: Gemini147258 <[email protected]>
AuthorDate: Thu Feb 27 10:07:46 2025 +0800
[Doc][Improve] support chinese [docs/zh/connector-v2/sink/Oracle.md] (#8831)
---
docs/zh/connector-v2/sink/Oracle.md | 207 ++++++++++++++++++++++++++++++++++++
1 file changed, 207 insertions(+)
diff --git a/docs/zh/connector-v2/sink/Oracle.md
b/docs/zh/connector-v2/sink/Oracle.md
new file mode 100644
index 0000000000..5882779352
--- /dev/null
+++ b/docs/zh/connector-v2/sink/Oracle.md
@@ -0,0 +1,207 @@
+# Oracle
+
+> JDBC Oracle Sink 连接器
+
+## 支持这些引擎
+
+> Spark<br/>
+> Flink<br/>
+> SeaTunnel Zeta<br/>
+
+## 描述
+
+通过jdbc写入数据。支持批处理模式和流模式,支持并发写入,支持“精确一次”
+语义(使用XA事务保证)。
+
+## 依赖
+
+### 对于 Spark/Flink 引擎
+
+> 1. 您需要确保 [jdbc driver jar
package](https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8)已经添加到目录
`${SEATUNNEL_HOME}/plugins/`.
+
+### 对于 SeaTunnel Zeta 引擎
+
+> 1. 您需要确保 [jdbc driver jar
package](https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8)
已经添加到目录 `${SEATUNNEL_HOME}/lib/`.
+
+## 主要特性
+
+- [x] [精确一次](../../concept/connector-v2-features.md)
+- [x] [cdc](../../concept/connector-v2-features.md)
+
+>使用“Xa事务”来确保“精确一次”。因此,数据库只支持“精确一次”,即
+>支持“Xa事务”。您可以设置`is_exactly_once=true `来启用它。
+
+## 支持的数据源信息
+
+| 数据源 | 支持的版本 | 驱动器 |
网址 | Maven下载链接
|
+|------------|----------------------------------------------------------|--------------------------|----------------------------------------|--------------------------------------------------------------------|
+| Oracle | 不同的依赖版本具有不同的驱动程序类。 | oracle.jdbc.OracleDriver |
jdbc:oracle:thin:@datasource01:1523:xe |
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 |
+
+## 数据库依赖关系
+
+>请下载“Maven”对应的支持列表,并将其复制到“$SEATUNNEL_HOME/plugins/jdbc/lib/”工作目录<br/>
+>例如,Oracle数据源:cp ojdbc8-xxxx.jar$SEATUNNEL_HOME/lib/<br/>
+>要支持i18n字符集,请将orai18n.jar复制到$SEATUNNEL_HOME/lib/目录。
+
+## 数据类型映射
+
+| Oracle 数据类型
| SeaTunnel 数据类型 |
+|--------------------------------------------------------------------------------------|---------------------|
+| INTEGER
| INT |
+| FLOAT
| DECIMAL(38, 18) |
+| NUMBER(precision <= 9, scale == 0)
| INT |
+| NUMBER(9 < precision <= 18, scale == 0)
| BIGINT |
+| NUMBER(18 < precision, scale == 0)
| DECIMAL(38, 0) |
+| NUMBER(scale != 0)
| DECIMAL(38, 18) |
+| BINARY_DOUBLE
| DOUBLE |
+| BINARY_FLOAT<br/>REAL
| FLOAT |
+|
CHAR<br/>NCHAR<br/>NVARCHAR2<br/>VARCHAR2<br/>LONG<br/>ROWID<br/>NCLOB<br/>CLOB<br/>
| STRING |
+| DATE
| DATE |
+| TIMESTAMP<br/>TIMESTAMP WITH LOCAL TIME ZONE
| TIMESTAMP |
+| BLOB<br/>RAW<br/>LONG RAW<br/>BFILE
| BYTES |
+
+## 参数
+
+| 名称 | 类型 | 是否必填 | 默认值
|
描述
|
+|-------------------------------------------|---------|----------|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| url | String | 是 | -
| JDBC 连接的 URL。参见示例: jdbc:oracle:thin:@datasource01:1523:xe
|
+| driver | String | 是 | -
| 用于连接远程数据源的 JDBC 类名,<br/> 如果使用 Oracle,值为
`oracle.jdbc.OracleDriver`。
|
+| user | String | 否 | -
| 连接实例用户名。
|
+| password | String | 否 | -
| 连接实例密码。
|
+| query | String | 否 | -
| 使用此sql将上游输入数据写入数据库。例如: `INSERT ...`,`query` 具有更高的优先级
|
+| database | String | 否 | -
| 使用此 `database` 和 `table-name`
自动生成sql并接收上游输入数据写入数据库。<br/>此选项与`query` 互斥,具有更高的优先级
|
+| table | String | 否 | -
| 使用数据库和此表名自动生成sql并接收上游输入数据写入数据库。<br/>此选项与`query` 互斥,具有更高的优先级
|
+| primary_keys | Array | 否 | -
| 此选项用于支持以下操作,例如 `insert`, `delete`, 和 `update` 当自动生成sql.
|
+| support_upsert_by_query_primary_key_exist | Boolean | 否 | false
| 选择使用INSERT sql、UPDATE
sql根据查询主键是否存在来处理更新事件(INSERT、UPDATE_AFTER)。此配置仅在数据库不支持升级语法时使用**注**:此方法性能低 |
+| connection_check_timeout_sec | Int | 否 | 30
| 等待用于验证连接的数据库操作完成的时间(秒)。
|
+| max_retries | Int | 否 | 0
| 提交失败的重试次数(executeBatch)
|
+| batch_size | Int | 否 | 1000
|
对于批量写入,当缓冲记录的数量达到“batch_size”的数量或时间达到“checkpoint.interval”<br/>时,数据将被刷新到数据库中。
|
+| batch_interval_ms | Int | 否 | 1000
|
对于批写入,当缓冲区的数量达到“batch_size”的数量或时间达到“batch-interval_ms”时,数据将被刷新到数据库中。
|
+| is_exactly_once | Boolean | 否 | false
|
是否启用精确一次语义,这将使用Xa事务。如果启用,则需要<br/>设置`xa_data_source_class_name`。
|
+| generate_sink_sql | Boolean | 否 | false
| 根据要写入的数据库表生成sql语句
|
+| xa_data_source_class_name | String | 否 | -
|
数据库Driver的xa数据源类名,例如Oracle,是`Oracle.jdbc.xa.client。OracleXADataSource和<br/>请参阅附录了解其他数据源
|
+| max_commit_attempts | Int | 否 | 3
| 事务提交失败的重试次数
|
+| transaction_timeout_sec | Int | 否 | -1
| 事务打开后的超时,默认值为-1(永不超时)。请注意,设置超时可能会影响<br/>精确一次语义
|
+| auto_commit | Boolean | 否 | true
| 默认情况下启用自动事务提交
|
+| properties | Map | 否 | -
| 其他连接配置参数,当属性和URL具有相同的参数时,优先级由驱动程序的特定实现决定。例如,在MySQL中,属性优先于URL。
|
+| common-options | | 否 | -
| Sink插件常用参数,请参考 [Sink Common
Options](../sink-common-options.md)
|
+| schema_save_mode | Enum | 否 |
CREATE_SCHEMA_WHEN_NOT_EXIST | 在启动同步任务之前,对目标侧的现有表面结构选择不同的处理方案。
|
+| data_save_mode | Enum | 否 | APPEND_DATA
| 在启动同步任务之前,对目标端的现有数据选择不同的处理方案。
|
+| custom_sql | String | 否 | -
|
当data_save_mode选择CUSTOM_PROCESSING时,您应该填写CUSTOM_SQL参数。此参数通常填充可以执行的SQL。SQL将在同步任务之前执行。
|
+| enable_upsert | Boolean | 否 | true
| 通过primary_keys存在启用upstart,如果任务只有“插入”,将此参数设置为“false”可以加快数据导入
|
+
+### 提示
+
+>如果未设置partition_column,它将以单并发运行,如果设置了partition_column,它将根据任务的并发数并行执行。
+
+## 任务示例
+
+### 简单的例子:
+
+>此示例定义了一个SeaTunnel同步任务,该任务通过FakeSource自动生成数据并将其发送到JDBC
Sink。FakeSource总共生成16行数据(row.num=16),每行有两个字段,name(字符串类型)和age(int类型)。最终的目标表是test_table,表中也将有16行数据。在运行此作业之前,您需要在Oracle中创建测试数据库和表test_table。如果您尚未安装和部署SeaTunnel,则需要按照[安装SeaTunnel](../../start-v2/local/deployment.md)中的说明安装和部署SeaTunnel。然后按照[快速启动SeaTunnel引擎](../../Start-v2/locale/Quick-Start-SeaTunnel-Engine.md)中的说明运行此作业。
+
+```
+# 定义运行环境
+env {
+ parallelism = 1
+ job.mode = "BATCH"
+}
+
+source {
+ FakeSource {
+ parallelism = 1
+ plugin_output = "fake"
+ row.num = 16
+ schema = {
+ fields {
+ name = "string"
+ age = "int"
+ }
+ }
+ }
+ #如果你想了解更多关于如何配置seatunnel的信息,并查看完整的源插件列表,
+ #请前往https://seatunnel.apache.org/docs/connector-v2/source
+}
+
+transform {
+ #如果你想了解更多关于如何配置seatunnel的信息,并查看转换插件的完整列表,
+ #请前往https://seatunnel.apache.org/docs/transform-v2
+}
+
+sink {
+ jdbc {
+ url = "jdbc:oracle:thin:@datasource01:1523:xe"
+ driver = "oracle.jdbc.OracleDriver"
+ user = root
+ password = 123456
+ query = "INSERT INTO TEST.TEST_TABLE(NAME,AGE) VALUES(?,?)"
+ }
+ #如果你想了解更多关于如何配置seatunnel的信息,并查看完整的sink插件列表,
+ #请前往https://seatunnel.apache.org/docs/connector-v2/sink
+}
+```
+
+### 生成Sink SQL
+
+>此示例不需要编写复杂的sql语句,您可以配置数据库名称表名以自动为您生成add语句
+
+```
+sink {
+ Jdbc {
+ url = "jdbc:oracle:thin:@datasource01:1523:xe"
+ driver = "oracle.jdbc.OracleDriver"
+ user = root
+ password = 123456
+
+ generate_sink_sql = true
+ database = XE
+ table = "TEST.TEST_TABLE"
+ }
+}
+```
+
+### 精确一次:
+
+为了准确的写入场景,我们保证一次准确
+
+```
+sink {
+ jdbc {
+ url = "jdbc:oracle:thin:@datasource01:1523:xe"
+ driver = "oracle.jdbc.OracleDriver"
+
+ max_retries = 0
+ user = root
+ password = 123456
+ query = "INSERT INTO TEST.TEST_TABLE(NAME,AGE) VALUES(?,?)"
+
+ is_exactly_once = "true"
+
+ xa_data_source_class_name = "oracle.jdbc.xa.client.OracleXADataSource"
+ }
+}
+```
+
+### CDC(变更数据捕获)事件
+
+>我们也支持CDC更改数据。在这种情况下,您需要配置数据库、表和主键。
+
+```
+sink {
+ jdbc {
+ url = "jdbc:oracle:thin:@datasource01:1523:xe"
+ driver = "oracle.jdbc.OracleDriver"
+ user = root
+ password = 123456
+
+ generate_sink_sql = true
+ # You need to configure both database and table
+ database = XE
+ table = "TEST.TEST_TABLE"
+ primary_keys = ["ID"]
+ schema_save_mode = "CREATE_SCHEMA_WHEN_NOT_EXIST"
+ data_save_mode="APPEND_DATA"
+ }
+}
+```
+