PostgreSQL 数据存储
概述
PostgreSQL 动作用于将规则引擎处理后的数据存储到 PostgreSQL 数据库中。PostgreSQL 是一个功能强大的开源关系型数据库,支持复杂查询、事务处理和地理信息等高级特性。
配置参数
基础配置
参数 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
dataSource | string | 是 | - | PostgreSQL 数据源名称 |
table | string | 是 | - | 目标表名 |
fields | array | 是 | - | 字段映射配置 |
batchSize | number | 否 | 1000 | 批量插入大小 |
batchInterval | number | 否 | 1000 | 批量间隔(毫秒) |
timeout | number | 否 | 30000 | 操作超时时间(毫秒) |
useTransaction | boolean | 否 | true | 是否使用事务 |
字段映射配置
{
"fields": [
{
"name": "device_id",
"type": "VARCHAR(100)",
"value": "clientId"
},
{
"name": "timestamp",
"type": "TIMESTAMP",
"value": "timestamp"
},
{
"name": "data",
"type": "JSONB",
"value": "payload"
}
]
}
使用示例
基础配置示例
{
"action": "SAVE_POSTGRESQL",
"config": {
"dataSource": "postgresql_ds",
"table": "device_data",
"fields": [
{
"name": "device_id",
"type": "VARCHAR(100)",
"value": "clientId"
},
{
"name": "timestamp",
"type": "TIMESTAMP",
"value": "timestamp"
},
{
"name": "temperature",
"type": "DOUBLE PRECISION",
"value": "payload.temperature"
},
{
"name": "humidity",
"type": "DOUBLE PRECISION",
"value": "payload.humidity"
},
{
"name": "location",
"type": "JSONB",
"value": "payload.location"
}
],
"batchSize": 1000,
"batchInterval": 1000,
"useTransaction": true
}
}
规则示例
-- 收集设备数据并存储到 PostgreSQL
SELECT
clientId,
timestamp,
payload.temperature as temperature,
payload.humidity as humidity,
payload.location as location
FROM "$EVENT.PUBLISH"
WHERE topic =~ 'device/+/data'
AND isJson(payload)