🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
使用Lua脚本可以实现更复杂的数据处理逻辑,go-mysql-transfer支持Lua5.1语法 # **示例** t_user表,数据如下: ![](https://img.kancloud.cn/b7/ae/b7aea55df3a0d071d67a930b1f497314_589x141.png) ## **示例一** Lua脚本: ``` -- t_user_mongo.lua local ops = require("mongodbOps") --加载mongodb操作模块 local row = ops.rawRow() --当前数据库的一行数据,table类型 local action = ops.rawAction() --当前数据库事件,包括:insert、update、delete local result = {} -- 定义一个table for k, v in pairs(row) do if k ~="ID" then -- 列名不为ID result[k] = v end end local id = row["ID"] --获取ID列的值 result["_id"] = id -- _id为MongoDB的主键标识 if action == "insert" then -- 新增事件 ops.INSERT("t_user",result) -- 新增,第一个参数为collection名称,string类型;第二个参数为要修改的数据,talbe类型 elseif action == "delete" then -- 删除事件 -- 修改事件 ops.DELETE("t_user",id) -- 删除,第一个参数为collection名称(string类型),第二个参数为ID else -- 修改事件 ops.UPDATE("t_user",id,result) -- 修改,第一个参数为collection名称,string类型;第二个参数为ID;第三个参数为要修改的数据,talbe类型 -- ops.UPSERT("t_user",id,result) -- 修改或新增,第一个参数为collection名称,string类型;第二个参数为ID;第三个参数为要修改的数据,talbe类型 end ``` 引入Lua脚本: ``` rule: - schema: eseap #数据库名称 table: t_user #表名称 lua_file_path: lua/t_user_mongo.lua #lua脚本文件 mongodb_database: transfer #mongodb database不能为空 ``` 同步到MongoDB的数据如下: ![](https://img.kancloud.cn/05/44/05441447cbbc3d00e0c7c3ac62de2cbc_497x142.png) ## **示例二** Lua脚本: ``` -- t_user_mongo2.lua local ops = require("mongodbOps") --加载mongodb操作模块 local row = ops.rawRow() --当前数据库的一行数据,table类型 local action = ops.rawAction() --当前数据库事件,包括:insert、update、delete local id = row["ID"] --获取ID列的值 local userName = row["USER_NAME"] --获取USER_NAME列的值 local password = row["PASSWORD"] --获取USER_NAME列的值 local createTime = row["CREATE_TIME"] --获取CREATE_TIME列的值 local result = {} -- 定义一个table result["_id"] = id -- _id为MongoDB的主键标识 result["account"] = userName result["password"] = password result["createTime"] = createTime result["source"] = "binlog" -- 数据来源 if action == "insert" then -- 只监听insert事件 ops.INSERT("t_user",result) -- 新增,第一个参数为collection名称,string类型;第二个参数为要修改的数据,talbe类型 end ``` 引入Lua脚本: ``` rule: - schema: eseap #数据库名称 table: t_user #表名称 lua_file_path: lua/t_user_mongo2.lua #lua脚本文件 mongodb_database: transfer #mongodb database不能为空 ``` 同步到MongoDB的数据如下: ![](https://img.kancloud.cn/ab/b1/abb1d666a66fa498d7500a5b7f3d9161_540x145.png) # **mongodbOps模块** 提供的方法如下: 1. INSERT: 插入操作,如:ops.INSERT(collection,result)。参数collection为集合名称,字符串类型;参数result为要插入的数据,table类型 2. UPDATE: 修改操作,如:ops.UPDATE(collection,id,result)。参数collection为集合名称,字符串类型;参数id为要修改的数据主键,类型不限;参数result为要修改的数据,table类型 3. DELETE: 删除操作,如:ops.DELETE(collection,id)。参数collection为集合名称,字符串类型;参数id为要修改的数据主键,类型不限; 4. UPSERT: 修改或插入操作,如:ops.UPSERT(collection,id,result)。参数collection为集合名称,字符串类型;参数id为要修改的数据主键,类型不限;参数result为要修改的数据,table类型;如果集合中有数据则修改,否则新增