mysql - 使用 WSO2 CEP 更新 MySQL 数据库

标签 mysql wso2 siddhi wso2-cep

有什么方法可以在不更新流中的空值的情况下更新 MySQL Db。如果我的输入数据流包含一些空值,目前该空值使用“data_empty”值表示。那时 CEP 使用该值(“data_empty”)更新数据库。我的目标是在不更新空值的情况下更新其余内容。是否可以使用 siddhi 和 WSO2 CEP。

@Plan:name('DBUpdateExecutionPlan')
@Import('testStream:1.0.0')
define stream input (id string, param1 string, param2 string);

@Export('testOutStream:1.0.0')
define stream output (id string, param1 string, param2 string);

@from(eventtable = 'rdbms' , datasource.name = 'MYSQL' , table.name = 'cep')
define table cepTable (id string, param1 string, param2 string) ;

from input#window.time(0 sec)
select * 
update cepTable on id == cepTable.id;

最佳答案

仅将非空(在您的方案中不是“data_empty”)值更新到数据库有点困难。但是在 Siddhi 中,有一个名为 ifThenElse(condition, value if true, value if false) 的函数,可以在您的场景中使用。请参阅下面的示例执行计划,了解如何使用 ifThenElse() 和表更新(类似于您的用例)。

@Plan:name('IfThenElseExecutionPlan')

@Import('inputStream:1.0.0')
define stream dataIn (roomId int, roomType string, roomTemp float);

@Export('outputStream:1.0.0')
define stream dataOut (roomId int, roomType string, roomTemp float);

@From(eventtable='rdbms', datasource.name='cepdatabase', table.name='roomTable')
define table roomTable (roomId int, roomType string, roomTemp float);

from dataIn[not((roomTable.roomId == roomId) in roomTable)]
insert into updateStream;

from dataIn join roomTable
on roomTable.roomId == dataIn.roomId
select  dataIn.roomId as roomId, 
        ifThenElse(dataIn.roomType=='data_empty', roomTable.roomType, dataIn.roomType) as roomType, 
        ifThenElse(dataIn.roomTemp==0.0f, roomTable.roomTemp, dataIn.roomTemp) as roomTemp
insert into updateStream;

from updateStream
insert overwrite roomTable
on roomTable.roomId == roomId;

关于mysql - 使用 WSO2 CEP 更新 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913522/

相关文章:

java - Siddhi HTTP NoSuchMethodError 错误

java - siddhi - 无法使用 siddhi 从rabbitmq 检索事件消息

php - MySQL 代码只在循环中执行一次而不是多次

java - 将笔记本电脑配置为Mysql服务器

php - 添加 ajax 自动保存后,与数据库错误的连接过多

WSO2 ESB HTTP 端点 URI 参数

app-store - WSO2 企业商店 : New asset type

linux - WSO2 CEP thrift ip地址未绑定(bind)到linux机器的eth0/sitelocal ip地址

java - 使用 IntelliJ IDEA 插件在 Siddhi SDK 中启动 HL7 服务时出现端口绑定(bind)错误

php - 是否有与 PDO::FETCH_CLASS 等效的 INSERT 或 UPDATE?