CREATE TABLE tableName(
colName colType,
...
colNameX colType,
primary key (colName)
)WITH(
type ='postgresql',
url ='jdbcUrl',
userName ='userName',
password ='pwd',
tableName ='tableName',
parallelism ='parllNum'
);
postgresql-9.5+
| 参数名称 | 含义 |
|---|---|
| tableName | 在 sql 中使用的名称;即注册到flink-table-env上的名称 |
| colName | 列名称 |
| colType | 列类型 colType支持的类型 |
| primary key | updateMode为UPSERT时,需要指定的主键信息 |
| 参数名称 | 含义 | 是否必填 | 默认值 |
|---|---|---|---|
| type | 结果表插件类型,必须为postgresql | 是 | |
| url | 连接postgresql数据库 jdbcUrl | 是 | |
| userName | postgresql连接用户名 | 是 | |
| password | postgresql连接密码 | 是 | |
| tableName | postgresql表名称 | 是 | |
| schema | postgresql表空间 | 否 | |
| parallelism | 并行度设置 | 否 | 1 |
| batchSize | flush的大小 | 否 | 100 |
| batchWaitInterval | flush的时间间隔,单位ms | 否 | 1000 |
| allReplace | true:新值替换旧值 | 否 | false |
| updateMode | APPEND:不回撤数据,只下发增量数据,UPSERT:先删除回撤数据,然后更新 | 否 | 结果表设置主键则为UPSERT |
回溯流删除
CREATE TABLE source1 (
id int,
name VARCHAR
)WITH(
type ='kafka11',
bootstrapServers ='172.16.8.107:9092',
zookeeperQuorum ='172.16.8.107:2181/kafka',
offsetReset ='latest',
topic ='mqTest03',
timezone='Asia/Shanghai',
topicIsPattern ='false'
);
CREATE TABLE source2(
id int,
address VARCHAR
)WITH(
type ='kafka11',
bootstrapServers ='172.16.8.107:9092',
zookeeperQuorum ='172.16.8.107:2181/kafka',
offsetReset ='latest',
topic ='mqTest04',
timezone='Asia/Shanghai',
topicIsPattern ='false'
);
CREATE TABLE MyResult(
id int,
name VARCHAR,
address VARCHAR,
primary key (id)
)WITH(
type='postgresql',
url='jdbc:postgresql://172.16.8.193:5432/DTstack',
userName='root',
password='123456',
tableName='userInfo',
schema = 'aaa',
updateMode = 'upsert',
batchSize = '1'
);
insert into MyResult
select
s1.id,
s1.name,
s2.address
from
source1 s1
left join
source2 s2
on
s1.id = s2.id
数据结果:
向Topic mqTest03 发送数据 {"name":"maqi","id":1001} 插入 (1001,"maqi",null)
向Topic mqTest04 发送数据 {"address":"hz","id":1001} 删除 (1001,"maqi",null) 插入 (1001,"maqi","hz")