提供再Lua中反查數據的能力,基于Binlog的數據同步工具,只能監聽到單表行數據的變更。無法像基于SQL的ETL工具那樣具有多表連接(join)的能力。如果要得到聚合數據,需要使用dbOps模塊。
# **示例**
t_user表,數據如下:

t_area表,數據如下:

Lua腳本:
```
-- t_user_dbclient.lua
local ops = require("redisOps") --加載redis操作模塊
local json = require("json") --加載json模塊
local db = require("dbOps") --加載數據庫操作模塊
local row = ops.rawRow() --當前數據庫的一行數據,table類型,key為列名稱
local action = ops.rawAction() --當前數據庫事件,包括:insert、updare、delete
local result = {} -- 定義一個table,作為結果
if action == "insert" then -- 只監聽插入事件 SADD(
local areaId = row["AREA_ID"] --獲取區域AREA_ID列的值
-- SQL語句,不能直接使用表名,要使用(數據庫名稱.表名稱),如:ESEAP.T_AREA
local sql = string.format("SELECT * FROM ESEAP.T_AREA WHERE ID = '%s'",areaId)
-- 執行SQL查詢,返回一條查詢結果,table類型;結構如:{"ID":"340100000000","NAME":"安徽省 合肥市"}
local rs = db.selectOne(sql)
local areaName = rs["NAME"] --區域名稱
local id = row["ID"] --獲取row ID列的值
result["id"] = id
result["action"] = action
result["userName"] = row["USER_NAME"] --獲取row USER_NAME列的值,賦給結果集
result["password"] = row["PASSWORD"] --獲取row USER_NAME列的值,賦給結果集
result["createTime"] = row["CREATE_TIME"] --獲取row CREATE_TIME列的值,賦給結果集
result["source"] = "binlog" -- 數據來源
result["areaId"] = areaId
result["areaName"] = areaName
local key = "db_lua_test_"..id -- 定義key
local val = json.encode(result) -- 將result轉為json
ops.SET(key,val) -- 對應Redis的SET命令,第一個參數為key(支持string類型),第二個參數為value
end
```
引入腳本:
```
#目標類型
target: redis # 支持redis、mongodb、elasticsearch、rocketmq、kafka、rabbitmq
#規則配置
rule:
-
schema: eseap #數據庫名稱
table: t_user #表名稱
#order_by_column: id #排序字段,存量數據同步時不能為空
lua_file_path: lua/t_user_dbclient.lua #lua腳本文件
#lua_script: #lua 腳本
```
同步到Redis的數據如下:

# **dbOps模塊**
提供的方法如下:
1、selectOne(sql) 查詢一條數據,返回table類型的結果;如果查詢不到數據,返回空table;如果查詢到多個結果,會出錯
2、select(sql) 查詢多條數據,返回數組類型的結果,數組元素為tablem(格式如:[table1,table2]);查詢不到結果,返回空table;
- 簡介
- 部署運行
- 高可用集群
- 同步數據到Redis
- Redis配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到MongoDB
- MongoDB配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到RocketMQ
- RocketMQ配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到Kafka
- Kafka配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到RabbitMQ
- RabbitMQ配置
- 基于規則同步
- 基于Lua腳本同步
- 同步數據到Elasticsearch
- Elasticsearch配置
- 基于規則同步
- 基于Lua腳本同步
- 全量數據導入
- Lua腳本
- 基礎模塊
- Json模塊
- HttpClient模塊
- DBClient模塊
- 監控
- 性能測試
- 常見問題
- 更新記錄開發計劃