Skip to content

Commit 1ed10c3

Browse files
committed
add docs
1 parent be9540d commit 1ed10c3

File tree

5 files changed

+665
-119
lines changed

5 files changed

+665
-119
lines changed

docs/content.zh/docs/connectors/pipeline-connectors/postgres.md

Lines changed: 268 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ pipeline:
290290

291291
## 数据类型映射
292292

293-
294293
<div class="wy-table-responsive">
295294
<table class="colwidths-auto docutils">
296295
<thead>
@@ -300,6 +299,17 @@ pipeline:
300299
</tr>
301300
</thead>
302301
<tbody>
302+
<tr>
303+
<td>
304+
BOOLEAN <br>
305+
BIT(1) <br>
306+
<td>BOOLEAN</td>
307+
</tr>
308+
<tr>
309+
<td>
310+
BIT( > 1)
311+
<td>BYTES</td>
312+
</tr>
303313
<tr>
304314
<td>
305315
SMALLINT<br>
@@ -317,79 +327,289 @@ pipeline:
317327
<tr>
318328
<td>
319329
BIGINT<br>
320-
BIGSERIAL</td>
321-
<td>BIGINT</td>
322-
</tr>
323-
<tr>
324-
<td>NUMERIC</td>
325-
<td>DECIMAL(20, 0)</td>
326-
</tr>
327-
<tr>
328-
<td>BIGINT</td>
330+
BIGSERIAL<br>
331+
OID<br>
332+
</td>
329333
<td>BIGINT</td>
330334
</tr>
331335
<tr>
332336
<td>
333337
REAL<br>
334-
FLOAT4</td>
338+
FLOAT4
339+
</td>
335340
<td>FLOAT</td>
336341
</tr>
337-
<tr>
338-
<td>
339-
FLOAT8<br>
340-
DOUBLE PRECISION</td>
341-
<td>DOUBLE</td>
342-
</tr>
343-
<tr>
344-
<td>
345-
NUMERIC(p, s)<br>
346-
DECIMAL(p, s)</td>
347-
<td>DECIMAL(p, s)</td>
342+
<tr>
343+
<td>NUMERIC</td>
344+
<td>DECIMAL(38, 0)</td>
348345
</tr>
349346
<tr>
350-
<td>BOOLEAN</td>
351-
<td>BOOLEAN</td>
347+
<td>DOUBLE PRECISION<br>
348+
FLOAT8
349+
</td>
350+
<td>DOUBLE</td>
352351
</tr>
352+
<tr>
353+
<td> CHAR[(M)]<br>
354+
VARCHAR[(M)]<br>
355+
CHARACTER[(M)]<br>
356+
BPCHAR[(M)]<br>
357+
CHARACTER VARYING[(M)]
358+
</td>
359+
<td>STRING</td>
360+
</tr>
353361
<tr>
354-
<td>DATE</td>
355-
<td>DATE</td>
362+
<td>TIMESTAMPTZ<br>
363+
TIMESTAMP WITH TIME ZONE</td>
364+
<td>ZonedTimestampType</td>
356365
</tr>
357366
<tr>
358-
<td>TIME [(p)] [WITHOUT TIMEZONE]</td>
359-
<td>TIME [(p)] [WITHOUT TIMEZONE]</td>
367+
<td>INTERVAL [P]</td>
368+
<td>BIGINT</td>
360369
</tr>
361370
<tr>
362-
<td>TIMESTAMP [(p)] [WITHOUT TIMEZONE]</td>
363-
<td>TIMESTAMP [(p)] [WITHOUT TIMEZONE]</td>
371+
<td>INTERVAL [P]</td>
372+
<td>STRING(when interval.handling.mode is set to string)</td>
364373
</tr>
365374
<tr>
366-
<td>
367-
CHAR(n)<br>
368-
CHARACTER(n)<br>
369-
VARCHAR(n)<br>
370-
CHARACTER VARYING(n)</td>
371-
<td>CHAR(n)</td>
375+
<td>BYTEA</td>
376+
<td>BYTES or STRING (when binary.handling.mode is set to base64 or base64-url-safe or hex)</td>
372377
</tr>
373378
<tr>
374379
<td>
375-
TEXT</td>
380+
JSON<br>
381+
JSONB<br>
382+
XML<br>
383+
UUID<br>
384+
POINT<br>
385+
LTREE<br>
386+
CITEXT<br>
387+
INET<br>
388+
INT4RANGE<br>
389+
INT8RANGE<br>
390+
NUMRANGE<br>
391+
TSRANGE<br>
392+
DATERANGE<br>
393+
ENUM
394+
</td>
376395
<td>STRING</td>
377396
</tr>
378-
<tr>
379-
<td>BYTEA</td>
380-
<td>BYTES</td>
381-
</tr>
382397
</tbody>
383398
</table>
384399
</div>
385400

386-
### 空间数据类型映射
387-
PostgreSQL通过PostGIS扩展支持空间数据类型:
401+
### Temporal types Mapping
402+
除了包含时区信息的 PostgreSQL 的 TIMESTAMPTZ 数据类型之外,其他时间类型如何映射取决于连接器配置属性 time.precision.mode 的值。以下各节将描述这些映射关系:
403+
time.precision.mode=adaptive
404+
405+
time.precision.mode=adaptive_time_microseconds
406+
407+
time.precision.mode=connect
408+
409+
410+
当 time.precision.mode 属性设置为默认的 adaptive(自适应)时,连接器会根据列的数据类型定义来确定字面类型和语义类型。这可以确保事件能够精确地表示数据库中的值。
411+
<div class="wy-table-responsive">
412+
<table class="colwidths-auto docutils">
413+
<thead>
414+
<tr>
415+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
416+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
417+
</tr>
418+
</thead>
419+
<tbody>
420+
<tr>
421+
<td>
422+
DATE
423+
<td>DATE</td>
424+
</tr>
425+
<tr>
426+
<td>
427+
TIME([P])
428+
</td>
429+
<td>TIME([P])</td>
430+
</tr>
431+
<tr>
432+
<td>
433+
TIMESTAMP([P])
434+
</td>
435+
<td>TIMESTAMP([P])</td>
436+
</tr>
437+
</tbody>
438+
</table>
439+
</div>
440+
441+
### Decimal types Mapping
442+
PostgreSQL 连接器配置属性 decimal.handling.mode 的设置决定了连接器如何映射十进制类型。
443+
444+
当 decimal.handling.mode 属性设置为 precise(精确)时,连接器会对所有 DECIMAL、NUMERIC 和 MONEY 列使用 Kafka Connect 的 org.apache.kafka.connect.data.Decimal 逻辑类型。这是默认模式。
445+
<div class="wy-table-responsive">
446+
<table class="colwidths-auto docutils">
447+
<thead>
448+
<tr>
449+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
450+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
451+
</tr>
452+
</thead>
453+
<tbody>
454+
<tr>
455+
<td>
456+
NUMERIC[(M[,D])]
457+
<td>DECIMAL[(M[,D])]</td>
458+
</tr>
459+
<tr>
460+
<td>
461+
NUMERIC
462+
<td>DECIMAL(38,0)</td>
463+
</tr>
464+
<tr>
465+
<td>
466+
DECIMAL[(M[,D])]
467+
<td>DECIMAL[(M[,D])]</td>
468+
</tr>
469+
<tr>
470+
<td>
471+
DECIMAL
472+
<td>DECIMAL(38,0)</td>
473+
</tr>
474+
<tr>
475+
<td>
476+
MONEY[(M[,D])]
477+
<td>DECIMAL(38,digits)(schema 参数 scale 包含一个整数,表示小数点移动了多少位。scale schema 参数由 money.fraction.digits 连接器配置属性决定。)</td>
478+
</tr>
479+
</tbody>
480+
</table>
481+
</div>
482+
483+
当 decimal.handling.mode 属性设置为 double 时,连接器将所有 DECIMAL、NUMERIC 和 MONEY 值表示为 Java 的 double 值,并按照下表所示进行编码。
484+
485+
<div class="wy-table-responsive">
486+
<table class="colwidths-auto docutils">
487+
<thead>
488+
<tr>
489+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
490+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
491+
</tr>
492+
</thead>
493+
<tbody>
494+
<tr>
495+
<td>
496+
NUMERIC[(M[,D])]
497+
<td>DOUBLE</td>
498+
</tr>
499+
<tr>
500+
<td>
501+
DECIMAL[(M[,D])]
502+
<td>DOUBLE</td>
503+
</tr>
504+
<tr>
505+
<td>
506+
MONEY[(M[,D])]
507+
<td>DOUBLE</td>
508+
</tr>
509+
</tbody>
510+
</table>
511+
</div>
388512

389-
GEOMETRY(POINT, xx):表示使用笛卡尔坐标系的点,EPSG:xxx定义其坐标系统,适用于局部平面计算。
390-
GEOGRAPHY(MULTILINESTRING):以经纬度存储多条线串,基于球面模型,适合全球范围的空间分析。
513+
decimal.handling.mode 配置属性的最后一个可选设置是 string(字符串)。在这种情况下,连接器将 DECIMAL、NUMERIC 和 MONEY 值表示为其格式化的字符串形式,并按照下表所示进行编码。
514+
<div class="wy-table-responsive">
515+
<table class="colwidths-auto docutils">
516+
<thead>
517+
<tr>
518+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
519+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
520+
</tr>
521+
</thead>
522+
<tbody>
523+
<tr>
524+
<td>
525+
NUMERIC[(M[,D])]
526+
<td>STRING</td>
527+
</tr>
528+
<tr>
529+
<td>
530+
DECIMAL[(M[,D])]
531+
<td>STRING</td>
532+
</tr>
533+
<tr>
534+
<td>
535+
MONEY[(M[,D])]
536+
<td>STRING</td>
537+
</tr>
538+
</tbody>
539+
</table>
540+
</div>
391541

392-
前者用于小范围平面数据,后者用于大范围、需考虑地球曲率的地理数据。
542+
当 decimal.handling.mode 的设置为 string 或 double 时,PostgreSQL 支持将 NaN(非数字)作为一个特殊值存储在 DECIMAL/NUMERIC 值中。在这种情况下,连接器会将 NaN 编码为 Double.NaN 或字符串常量 NAN。
543+
544+
### HSTORE type Mapping
545+
PostgreSQL 连接器配置属性 hstore.handling.mode 的设置决定了连接器如何映射 HSTORE 值。
546+
547+
当 hstore.handling.mode 属性设置为 json(默认值)时,连接器将 HSTORE 值表示为 JSON 值的字符串形式,并按照下表所示进行编码。当 hstore.handling.mode 属性设置为 map 时,连接器对 HSTORE 值使用 MAP 模式类型。
548+
<div class="wy-table-responsive">
549+
<table class="colwidths-auto docutils">
550+
<thead>
551+
<tr>
552+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
553+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
554+
</tr>
555+
</thead>
556+
<tbody>
557+
<tr>
558+
<td>
559+
HSTORE
560+
<td>STRING(hstore.handling.mode=string)</td>
561+
</tr>
562+
<tr>
563+
<td>
564+
HSTORE
565+
<td>MAP(hstore.handling.mode=map)</td>
566+
</tr>
567+
</tbody>
568+
</table>
569+
</div>
570+
571+
### Network address types Mapping
572+
PostgreSQL 拥有可以存储 IPv4、IPv6 和 MAC 地址的数据类型。使用这些类型来存储网络地址比使用纯文本类型更为合适。网络地址类型提供了输入错误检查以及专用的操作符和函数。
573+
<div class="wy-table-responsive">
574+
<table class="colwidths-auto docutils">
575+
<thead>
576+
<tr>
577+
<th class="text-left">PostgreSQL type<a href="https://www.postgresql.org/docs/12/datatype.html"></a></th>
578+
<th class="text-left">CDC type<a href="{% link dev/table/types.md %}"></a></th>
579+
</tr>
580+
</thead>
581+
<tbody>
582+
<tr>
583+
<td>
584+
INET
585+
<td>STRING</td>
586+
</tr>
587+
<tr>
588+
<td>
589+
CIDR
590+
<td>STRING</td>
591+
</tr>
592+
<tr>
593+
<td>
594+
MACADDR
595+
<td>STRING</td>
596+
</tr>
597+
<tr>
598+
<td>
599+
MACADDR8
600+
<td>STRING</td>
601+
</tr>
602+
</tbody>
603+
</table>
604+
</div>
605+
606+
### PostGIS Types Mapping
607+
PostgreSQL 通过 PostGIS 扩展支持空间数据类型:
608+
```
609+
GEOMETRY(POINT, xx): 在笛卡尔坐标系中表示一个点,其中 EPSG:xx 定义了坐标系。它适用于局部平面计算。
610+
GEOGRAPHY(MULTILINESTRING): 在基于球面模型的纬度和经度上存储多条线串。它适用于全球范围的空间分析。
611+
```
612+
前者适用于小范围的平面数据,而后者适用于需要考虑地球曲率的大范围数据。
393613
<div class="wy-table-responsive">
394614
<table class="colwidths-auto docutils">
395615
<thead>
@@ -401,11 +621,11 @@ PostgreSQL通过PostGIS扩展支持空间数据类型:
401621
<tbody>
402622
<tr>
403623
<td>GEOMETRY(POINT, xx)</td>
404-
<td>{"hexewkb":"0101000020730c00001c7c613255de6540787aa52c435c42c0","srid":3187}</td>
624+
<td>{"coordinates":[{"x":174.9479,"y":-36.7208,"z":"NaN","m":"NaN","valid":true}],"type":"Point","srid":3187}"</td>
405625
</tr>
406626
<tr>
407627
<td>GEOGRAPHY(MULTILINESTRING)</td>
408-
<td>{"hexewkb":"0105000020e610000001000000010200000002000000a779c7293a2465400b462575025a46c0c66d3480b7fc6440c3d32b65195246c0","srid":4326}</td>
628+
<td>{"coordinates":[{"x":169.1321,"y":-44.7032,"z":"NaN","m":"NaN","valid":true},{"x":167.8974,"y":-44.6414,"z":"NaN","m":"NaN","valid":true}],"type":"MultiLineString","srid":4326}</td>
409629
</tr>
410630
</tbody>
411631
</table>

0 commit comments

Comments
 (0)