创建数据写入任务
为了方便介绍,本节的数据源采用随机数据源(random),实际使用中可以根据实际情况创建数据源。
在实时计算控制台上,点击项目管理>项目列表,单击项目名进入目标项目。
点击开发>新建作业,创建数据写入的Flink SQL作业。
写入ADB PG的作业举例。 --SQL
--********************************************************************--
--Author: sqream_test
--CreateTime: 2020-04-27 19:13:44
--********************************************************************--
CREATE TABLE s_member_cart
(
a1 bigint ,
a2 tinyint ,
a3 smallint ,
a4 int ,
a5 boolean ,
a6 FLOAT ,
a7 DECIMAL ,
a8 double ,
a9 date ,
a10 time ,
a11 timestamp ,
a12 tinyint
) WITH (
type='random'
);
-- ads sink.
CREATE TABLE adsSink (
`B1` bigint ,
`B2` tinyint ,
`B3` smallint ,
`B4` int ,
`B5` boolean,
`B6` FLOAT ,
`B7` FLOAT ,
`B8` double ,
`B9` date ,
`B10` time ,
`B11` timestamp ,
`B12` varchar,
`B15` varchar
--PRIMARY KEY(b1)
) with (
--type='print'
type='adbpg',
version='1.1',
url='jdbc:postgresql://gp-xxxx:3432/testblink',
tableName='test',
userName='xxxx',
password='xxxxxx',
timeZone='Asia/Shanghai',
useCopy='0'
);
INSERT INTO adsSink
SELECT a1,a2,a3,a4,a5,a6,a6,a8,a9,a10,a11, case when a12 >0 then 'value1' else 'value2' end as b12,'{ "customer": "value", "items": {"product": "Beer","qty": 6}}'
from s_member_cart;
--insert into adsSink2 select a2, sum(a4) from s_member_cart group by a2;
参数说明
参数
参数说明
是否必填
备注
type
源表类型
是
固定值:adbpg。
url
JDBC连接地址
是
分析型数据库PostgreSQL版数据库的JDBC连接地址 。格式为‘jdbc:postgresql://:/’,其中yourNetworkAddress:内网地址。PortId:连接端口。yourDatabaseName:连接的数据库名称。示例:url='jdbc:postgresql://gp-xxxxxx.gpdb.cn-chengdu.rds.aliyuncs.com:3432/postgres'
tableName
表名
是
无。
username
账号
是
无。
password
密码
是
无。
maxRetryTimes
写入重试次数
否
默认为3。
useCopy
是否采用copy API写入数据
否
参数取值如下
1:采用copy API方式写入数据。
0:采用其他方式写入数据,例如BATCH INSERT或BATCH UPSERT。blink 3.6.0 版本默认为0,3.6.4及以上版本默认值为1;当取值为0时,会根据writeMode字段选择数据写入方式。
batchSize
一次批量写入的条数
否
默认值为5000。
exceptionMode
数据写入过程中出现异常时的处理策略
否
支持以下两种处理策略
ignore(默认值):忽略出现异常时写入的数据。
strict:数据写入异常时,Failover报错。
conflictMode
当出现主键冲突或者唯一索引冲突时的处理策略
否
支持以下三种处理策略
ignore (默认值):忽略主键冲突,保留之前的数据。
strict:主键冲突时,Failover报错。
update:主键冲突时,更新新到的数据。
upsert:主键冲突时,采用upsert方式写入数据。
targetSchema
Schema名称
否
默认值为public。
writeMode
在useCopy字段基础上,更细分的写入方式
否
blink 3.6.4 以后版本开始支持,在useCopy字段为0的场景下,可以设定writeMode字段采用其他写入方式,参数取值如下:
0 :采用BATCH INSERT方式写入数据。
1(默认值):采用COPY API写入数据。
2:采用BATCH UPSERT方式写入数据。upsert含义见
类型映射
实时计算字段类型
分析型数据库PostgreSQL版字段类型
BOOLEAN
BOOLEAN
TINYINT
SAMLLINT
SAMLLINT
SAMLLINT
INT
INT
BIGINT
BIGINT
DOUBLE
DOUBLE PRECISION
VARCHAR
TEXT
DATETIME
TIMESTAMP
DATE
DATE
FLOAT
REAL
DECIMAL
DOUBLE PRECISION
TIME
TIME
TIMESTAMP
TIMESTAMP