全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
流计算

创建云数据库(RDS)结果表

更新时间:2017-12-29 15:20:00

DDL定义

流计算支持使用RDS作为结果输出,目前支持数据存储类型有MySql/SqlServer/PostgreSQL。示例代码如下:

  1. CREATE RESULT TABLE rds_result (
  2. name STRING,
  3. value STRING,
  4. primary key(name)
  5. ) WITH (
  6. type='rds',
  7. url='jdbc:mysql://localhost:3306/javademo?useUnicode=true&characterEncoding=UTF8',
  8. username='username',
  9. password='password',
  10. tableName='table'
  11. );

需要注意的是:

  • 流计算写入RDS数据库结果表原理是,针对流计算每行结果数据,拼接成一行SQL向目标端数据库进行执行

  • RDS/Mysql支持自增主键,如果需要让流计算写入数据支持自增主键,在DDL中不声明该自增字段即可。例如,ID是自增字段,那么流计算DDL不写出该自增字段,那么数据库在一行数据写入过程中数据库会自动填补相关的自增字段。

实际上不同的RDS引擎的DDL声明方式存在一定的区别,如下:

Mysql DDL

  1. CREATE RESULT TABLE rds_result (
  2. name STRING,
  3. value STRING,
  4. primary key(name)
  5. ) WITH (
  6. type='rds',
  7. url='jdbc:mysql://localhost:3306/javademo?useUnicode=true&characterEncoding=UTF8',
  8. username='username',
  9. password='password',
  10. tableName='table'
  11. );

Sqlserver DDL

  1. CREATE RESULT TABLE rds_result (
  2. name STRING,
  3. value STRING,
  4. primary key(name)
  5. ) WITH (
  6. type='rds',
  7. url='jdbc:sqlserver://testsqlserver.sqlserver.rds.aliyuncs.com:3433;DatabaseName=xxx',
  8. username='username',
  9. password='password',
  10. tableName='table'
  11. );

PostgreSQL DDL

  1. CREATE RESULT TABLE rds_result (
  2. name STRING,
  3. value STRING,
  4. primary key(name)
  5. ) WITH (
  6. type='rds',
  7. url='jdbc:postgresql://rm-xxx.pg.rds.aliyuncs.com:3432/galaxy',
  8. username='username',
  9. password='password',
  10. tableName='table'
  11. );

WITH参数

字段名称 说明
type 数据存储类型,这里填写rds
username 能够读写该RDS的用户名
password 能够读写该RDS的密码
url 该数据库jdbc连接串信息,采用jdbc格式填写
tableName 该RDS的数据表名称

注意:

  • 如果声明RDS结果表没有定义PrimaryKey,那么输出数据将以Append方式追加到现有RDS表,即搭配使用INSERT INTO进行写入;如果声明RDS结果表定义有PrimaryKey,那么输出数据将以Update方式追加到现有RDS表,即搭配使用REPLACE INTO进行写入。

类型映射

不同数据引擎对于字段类型支持不一致,需要分开说明:

Mysql类型

Mysql字段类型 建议流计算字段类型
float/double Double
char/varchar/tinytext/text/mediumtext/longtext String
tinyint/smallint/mediumint/int/bigint Bigint
DATE/TIME/DATETIME/TIMESTAMP/YEAR String

注意:

  • 流计算暂不支持时间类型,因此建议用户使用String类型,格式为相应数据库时间类型的字符串写入。请查看Mysql文档有关时间类型的格式说明。例如,写入Mysql的DateTime类型,可以格式化为’0000-00-00 00:00:00’进行写入。

SqlServer类型

SqlServer字段类型 建议流计算字段类型
bigint/bit/numeric/smallint/smallmoney/int/tinyint/money/decimal Bigint
float/real Double
char/varchar/text/nchar/nvarchar/ntext String
时间类型 String

注意:

  • SqlServer维表类型支持较少,除上述类型之外,其他暂时均不支持。请查阅SqlServer文档有关时间类型的格式说明。

PostgreSQL类型

SqlServer字段类型 建议流计算字段类型
smallint/integer/bigint/numeric Bigint
real/double precision/numeric Double
varchar/char/text String
time/timez/date/timestamp/timestampz String

注意:

  • 流计算暂不支持时间类型,因此建议用户使用String类型,格式为相应数据库时间类型的字符串写入。请查阅Postgresql文档有关时间类型的格式说明。
本文导读目录