Skip to content

Commit 75da19d

Browse files
[Doc][Improve] support chinese [docs/zh/connector-v2/sink/OceanBase.md] (#8830)
Co-authored-by: David Zollo <[email protected]>
1 parent 6cf665f commit 75da19d

File tree

1 file changed

+186
-0
lines changed

1 file changed

+186
-0
lines changed

Diff for: docs/zh/connector-v2/sink/OceanBase.md

+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# OceanBase
2+
3+
> JDBC OceanBase Sink 连接器
4+
5+
## 支持引擎
6+
7+
> Spark<br/>
8+
> Flink<br/>
9+
> SeaTunnel Zeta<br/>
10+
11+
## 关键特性
12+
13+
- [ ] [精确一次](../../concept/connector-v2-features.md)
14+
- [x] [流处理](../../concept/connector-v2-features.md)
15+
16+
## 描述
17+
18+
通过jdbc写入数据。支持批处理模式和流模式,支持并发写入,支持精确一次语义。
19+
20+
## 支持的数据源信息
21+
22+
| 数据源 | 支持版本 | Driver | Url | Maven |
23+
|------------|---------------------|---------------------------|--------------------------------------|-------------------------------------------------------------------------------|
24+
| OceanBase | 所有OceanBase服务版本 | com.oceanbase.jdbc.Driver | jdbc:oceanbase://localhost:2883/test | [Download](https://mvnrepository.com/artifact/com.oceanbase/oceanbase-client) |
25+
26+
## 数据库相关依赖
27+
28+
> 请下载“Maven”对应的支持列表,并将其复制到“$SEATUNNEL_HOME/plugins/jdbc/lib/”工作目录<br/>
29+
> 例如: cp oceanbase-client-xxx.jar $SEATUNNEL_HOME/plugins/jdbc/lib/
30+
31+
## 数据类型映射
32+
33+
### Mysql模式
34+
35+
| Mysql Data type | SeaTunnel Data type |
36+
|-----------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
37+
| BIT(1)<br/>INT UNSIGNED | BOOLEAN |
38+
| TINYINT<br/>TINYINT UNSIGNED<br/>SMALLINT<br/>SMALLINT UNSIGNED<br/>MEDIUMINT<br/>MEDIUMINT UNSIGNED<br/>INT<br/>INTEGER<br/>YEAR | INT |
39+
| INT UNSIGNED<br/>INTEGER UNSIGNED<br/>BIGINT | BIGINT |
40+
| BIGINT UNSIGNED | DECIMAL(20,0) |
41+
| DECIMAL(x,y)(获取指定列的指定列大小<38) | DECIMAL(x,y) |
42+
| DECIMAL(x,y)(获取指定列的指定列大小>38) | DECIMAL(38,18) |
43+
| DECIMAL UNSIGNED | DECIMAL((获取指定列的指定列大小)+1,<br/>(获取指定列小数点右侧的位数。))) |
44+
| FLOAT<br/>FLOAT UNSIGNED | FLOAT |
45+
| DOUBLE<br/>DOUBLE UNSIGNED | DOUBLE |
46+
| CHAR<br/>VARCHAR<br/>TINYTEXT<br/>MEDIUMTEXT<br/>TEXT<br/>LONGTEXT<br/>JSON | STRING |
47+
| DATE | DATE |
48+
| TIME | TIME |
49+
| DATETIME<br/>TIMESTAMP | TIMESTAMP |
50+
| TINYBLOB<br/>MEDIUMBLOB<br/>BLOB<br/>LONGBLOB<br/>BINARY<br/>VARBINAR<br/>BIT(n) | BYTES |
51+
| GEOMETRY<br/>UNK否WN | 否t supported yet |
52+
53+
### Oracle 模式
54+
55+
| Oracle Data type | SeaTunnel Data type |
56+
|-----------------------------------------------------------|---------------------|
57+
| Number(p), p <= 9 | INT |
58+
| Number(p), p <= 18 | BIGINT |
59+
| Number(p), p > 18 | DECIMAL(38,18) |
60+
| REAL<br/> BINARY_FLOAT | FLOAT |
61+
| BINARY_DOUBLE | DOUBLE |
62+
| CHAR<br/>NCHAR<br/>NVARCHAR2<br/>NCLOB<br/>CLOB<br/>ROWID | STRING |
63+
| DATE | DATE |
64+
| TIMESTAMP<br/>TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP |
65+
| BLOB<br/>RAW<br/>LONG RAW<br/>BFILE | BYTES |
66+
| UNK否WN | 否t supported yet |
67+
68+
## Sink 选项
69+
70+
| Name | Type | Required | Default | Description |
71+
|-------------------------------------------|---------|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
72+
| url | String || - | JDBC连接的URL。参考案例: jdbc:oceanbase://localhost:2883/test |
73+
| driver | String || - | 用于连接到远程数据源的jdbc类名应为 `com.oceanbase.jdbc.Driver`. |
74+
| user | String || - | 连接实例用户名 |
75+
| password | String || - | 连接实例密码 |
76+
| query | String || - | 使用此sql将上游输入数据写入数据库。例如“insert…”查询具有更高的优先级 |
77+
| compatible_mode | String || - | OceanBase的兼容模式可以是“mysql”或“oracle”。 |
78+
| database | String || - | 使用这个“database”和“table-name”自动生成sql并接收上游输入数据写入数据库<br/>此选项与“query”互斥,具有更高的优先级。 |
79+
| table | String || - | 使用数据库和此表名自动生成sql并接收上游输入数据写入数据库<br/>此选项与“query”互斥,并且具有更高的 priority. |
80+
| primary_keys | Array || - | 此选项用于在自动生成sql时支持“insert”、“delete”和“update”等操作。 |
81+
| support_upsert_by_query_primary_key_exist | Boolean || false | 选择使用INSERT sql、UPDATE sql根据查询主键是否存在来处理更新事件(INSERT、UPDATE_AFTER)。此配置仅在数据库不支持升级语法时使用****:此方法性能低 |
82+
| connection_check_timeout_sec | Int || 30 | 等待用于验证连接的数据库操作完成的时间(秒)。 |
83+
| max_retries | Int || 0 | 提交失败的重试次数(executeBatch) |
84+
| batch_size | Int || 1000 | 对于批量写入,当缓冲记录的数量达到“batch_size”的数量或时间达到“checkpoint.interval”<br/>时,数据将被刷新到数据库中 |
85+
| generate_sink_sql | Boolean || false | 根据要写入的数据库表生成sql语句 |
86+
| max_commit_attempts | Int || 3 | 事务提交失败的重试次数 |
87+
| transaction_timeout_sec | Int || -1 | 事务打开后的超时,默认值为-1(永不超时)。请注意,设置超时可能会影响<br/>精确一次语义 |
88+
| auto_commit | Boolean || true | 默认情况下启用自动事务提交 |
89+
| properties | Map || - | 其他连接配置参数,当属性和URL具有相同的参数时,优先级由驱动程序的特定实现决定。例如,在MySQL中,属性优先于URL。 |
90+
| common-options | || - | Sink插件常用参数,详见[Sink common Options](../sink-common-options.md) |
91+
| enable_upsert | Boolean || true | 通过primary_keys存在启用upsert,如果任务没有键重复数据,将此参数设置为“false”可以加快数据导入 |
92+
93+
### 提示
94+
95+
> 如果未设置partition_column,它将以单并发运行,如果设置了partition_column,它将根据任务的并发数并行执行。
96+
97+
## 任务示例
98+
99+
### 简单示例:
100+
101+
> 此示例定义了一个SeaTunnel同步任务,该任务通过FakeSource自动生成数据并将其发送到JDBC Sink。FakeSource总共生成16行数据(row.num=16),每行有两个字段,name(字符串类型)和age(int类型)。最终的目标表是test_table,表中也将有16行数据。在运行此作业之前,您需要在mysql中创建数据库测试和表test_table。如果您尚未安装和部署SeaTunnel,则需要按照[安装SeaTunnel](../../start-v2/local/deployment.md)中的说明安装和部署SeaTunnel。然后按照[快速启动SeaTunnel引擎](../../Start-v2/locale/Quick-Start-SeaTunnel-Engine.md)中的说明运行此作业。
102+
103+
```
104+
# 定义运行环境
105+
env {
106+
parallelism = 1
107+
job.mode = "BATCH"
108+
}
109+
110+
source {
111+
# 这是一个示例源插件,**仅用于测试和演示功能源插件**
112+
FakeSource {
113+
parallelism = 1
114+
plugin_output = "fake"
115+
row.num = 16
116+
schema = {
117+
fields {
118+
name = "string"
119+
age = "int"
120+
}
121+
}
122+
}
123+
# 如果你想了解更多关于如何配置seatunnel的信息,并查看完整的source插件列表,
124+
# 请前往https://seatunnel.apache.org/docs/connector-v2/source
125+
}
126+
127+
transform {
128+
# 如果你想了解更多关于如何配置seatunnel的信息,并查看transform插件的完整列表,
129+
# 请前往https://seatunnel.apache.org/docs/transform-v2
130+
}
131+
132+
sink {
133+
jdbc {
134+
url = "jdbc:oceanbase://localhost:2883/test"
135+
driver = "com.oceanbase.jdbc.Driver"
136+
user = "root"
137+
password = "123456"
138+
compatible_mode = "mysql"
139+
query = "insert into test_table(name,age) values(?,?)"
140+
}
141+
# 如果你想了解更多关于如何配置seatunnel的信息,并查看完整的sink插件列表,
142+
# 请前往https://seatunnel.apache.org/docs/connector-v2/sink
143+
}
144+
```
145+
146+
### 生成 Sink SQL
147+
148+
> 此示例不需要编写复杂的sql语句,您可以配置数据库名称表名以自动为您生成add语句
149+
150+
```
151+
sink {
152+
jdbc {
153+
url = "jdbc:oceanbase://localhost:2883/test"
154+
driver = "com.oceanbase.jdbc.Driver"
155+
user = "root"
156+
password = "123456"
157+
compatible_mode = "mysql"
158+
# 根据数据库表名自动生成sql语句
159+
generate_sink_sql = true
160+
database = test
161+
table = test_table
162+
}
163+
}
164+
```
165+
166+
### CDC(Change Data Capture) 数据变更事件
167+
168+
> 我们也支持CDC变更数据。在这种情况下,您需要配置数据库、表和主键。
169+
170+
```
171+
sink {
172+
jdbc {
173+
url = "jdbc:oceanbase://localhost:3306/test"
174+
driver = "com.oceanbase.jdbc.Driver"
175+
user = "root"
176+
password = "123456"
177+
compatible_mode = "mysql"
178+
generate_sink_sql = true
179+
# 您需要同时配置数据库和表
180+
database = test
181+
table = sink_table
182+
primary_keys = ["id","name"]
183+
}
184+
}
185+
```
186+

0 commit comments

Comments
 (0)