开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5406|回复: 31
收起左侧

[易语言软件开源] mysql数据同步工具源码

[复制链接]
结帖率:100% (6/6)
发表于 2022-8-17 08:37:00 | 显示全部楼层 |阅读模式   北京市北京市
1.功能说明:
本程序主要功能为实时将某个mysql的表数据同步到另一个mysql中。
2.目录说明:pcc.ini:配置文件
TableStructure.sql:导入导出表结构sql
log_20220726.txt:日志,按时间创建
LySqlSync.e:源文件
依赖:libmysql.dll、MySql5.7类.ec、精易模块.ec、七夜_皮肤梦工厂v1.9.ec(皮肤模块
3.配置文件说明:
配置文件配置说明见附图。
注意1:发布端mysql与订阅端mysql的数据库名称要一致,且数据表名称也要一致
注意2:mysql_TimeLine后面配置的为订阅端数据表的时间字段,格式为XXXX-XX-XX XX:XX:XX
4.使用说明:
a)首先正确配置配置文件,保证发布的mysql和订阅的mysql都是可以正常连接的。
b)导出表结构,点击菜单栏中的:表结构管理->导出表结构,将发布端的表结构导出。
c)导入表结构,点击菜单栏中的:表结构管理->导入表结构,将发布端的表结构导入到订阅端。
注意3:如果订阅端存在表结构请忽略b-c步骤.
d)开始同步,点击菜单栏中的:同步管理->开始同步,开始实时数据同步。
e)结束同步,点击菜单栏中的:同步管理->结束同步,结束实时数据同步。
5.源码:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
mysql_SMySql类  
mysql_CMySql类  
表结构sql文本型  
是否结束逻辑型  
导入sql文本型  
mysql_字段记录文本型  
mysql_S_ip文本型  
mysql_S_uname文本型  
mysql_S_password文本型  
mysql_C_ip文本型  
mysql_C_uname文本型  
mysql_C_password文本型  
mysql_database文本型  
mysql_datatable文本型  
mysql_TimeLine文本型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
配置文件地址文本型 
配置文件内容文本型 
七夜_七彩条纹 ()
MYSQL_服务初始化 ()
是否结束 = 假
配置文件地址 = 取运行目录 ()“\pcc.ini”
配置文件内容 = UTF8到文本 (读入文件 (配置文件地址))
mysql_S_ip = 文本_取出中间文本 (配置文件内容, “mysql_S_ip=”, “;”)
mysql_S_uname = 文本_取出中间文本 (配置文件内容, “mysql_S_uname=”, “;”)
mysql_S_password = 文本_取出中间文本 (配置文件内容, “mysql_S_password=”, “;”)
mysql_C_ip = 文本_取出中间文本 (配置文件内容, “mysql_C_ip=”, “;”)
mysql_C_uname = 文本_取出中间文本 (配置文件内容, “mysql_C_uname=”, “;”)
mysql_C_password = 文本_取出中间文本 (配置文件内容, “mysql_C_password=”, “;”)
mysql_database = 文本_取出中间文本 (配置文件内容, “mysql_database=”, “;”)
mysql_datatable = 文本_取出中间文本 (配置文件内容, “mysql_datatable=”, “;”)
mysql_TimeLine = 文本_取出中间文本 (配置文件内容, “mysql_TimeLine=”, “;”)
超级编辑框2.内容 = mysql_S_ip + #换行符 + mysql_S_uname + #换行符 + mysql_S_password + #换行符 + mysql_C_ip + #换行符 + mysql_C_uname + #换行符 + mysql_C_password + #换行符 + mysql_database + #换行符 + mysql_datatable + #换行符 + mysql_TimeLine
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
mysql_S.断开 ()
mysql_C.断开 ()
MYSQL_服务卸载 ()
子程序名返回值类型公开备 注
_cha询sql  
参数名类 型参考可空数组备 注
参数_开始时间文本型
参数_结束时间文本型
变量名类 型静态数组备 注
记录集MySql记录集类 
i整数型 
j整数型 
字段信息MYSQL字段信息 
返回值文本型 
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
mysql_S.执行SQL语句 (“USE ” + mysql_database)
mysql_S.执行SQL语句 (“set names GBK”)
mysql_S.执行SQL语句 (“SELECT * FROM ” + mysql_datatable + “ WHERE ” + mysql_TimeLine + “>='” + 参数_开始时间 + “' AND ” + mysql_TimeLine + “<'” + 参数_结束时间 + “'”)
mysql_S.取记录集 (记录集)
计次循环首 (记录集.取字段总数 (), i)
记录集.取字段信息 (i - 1, 字段信息)
计次循环尾 ()
导入sql = 导入sql + #换行符“insert  into `” + mysql_datatable + mysql_字段记录
计次循环首 (记录集.取行数 (), i)
导入sql = 导入sql + #换行符“(”
计次循环首 (记录集.取字段总数 (), j)
返回值 = 记录集.读文本 (j - 1)
导入sql = 导入sql + “'” + 返回值 + “',”
计次循环尾 ()
导入sql = 取文本左边 (导入sql, 取文本长度 (导入sql) - 1)
导入sql = 导入sql + “),”
记录集.到下一行 ()
计次循环尾 ()
导入sql = 取文本左边 (导入sql, 取文本长度 (导入sql) - 1)
导入sql = 导入sql + “;”
超级编辑框1.内容 = 导入sql
mysql_S.断开 ()
子程序名返回值类型公开备 注
_获取当前时间文本型 
变量名类 型静态数组备 注
时间日期时间型 
文本型 
文本型 
文本型 
文本型 
文本型 
文本型 
返回时间文本型 
时间 = 取现行时间 ()
年 = 到文本 (取年份 (时间))
月 = 到文本 (取月份 (时间))
日 = 到文本 (取日 (时间))
时 = 到文本 (取小时 (时间))
分 = 到文本 (取分钟 (时间))
秒 = 到文本 (取秒 (时间))
如果真 (取文本长度 () < 4)
年 = “0” + 年
如果真 (取文本长度 () < 4)
年 = “0” + 年
如果真 (取文本长度 () < 4)
年 = “0” + 年



如果真 (取文本长度 () < 2)
月 = “0” + 月

如果真 (取文本长度 () < 2)
日 = “0” + 日

如果真 (取文本长度 () < 2)
时 = “0” + 时

如果真 (取文本长度 () < 2)
分 = “0” + 分

如果真 (取文本长度 () < 2)
秒 = “0” + 秒

返回时间 = 年 + “-” + 月 + “-” + 日 + “ ” + 时 + “:” + 分 + “:” + 秒
返回 (返回时间)
子程序名返回值类型公开备 注
_导出表结构_被选择  
变量名类 型静态数组备 注
表结构文本型 
超级编辑框1.内容 = “”
运行 (“cmd /c mysqldump -u” + mysql_S_uname + “ -p” + mysql_S_password + “ -d --add-drop-table ” + mysql_database + “ ” + mysql_datatable + “ > ”取运行目录 ()“\TableStructure.sql”, 假, 2)
程序_延时 (1000)
表结构 = 到文本 (读入文件 (取运行目录 ()“\TableStructure.sql”))
表结构sql = “CREATE TABLE IF NOT EXISTS”文本_取出中间文本 (表结构, “CREATE TABLE”, “utf8;”)“utf8;”
超级编辑框1.内容 = 表结构sql
如果 (取文本长度 (超级编辑框1.内容) < 50)
信息框 (“导出失败!”, 0, “提示”, )
信息框 (“导出成功!”, 0, “提示”, )

子程序名返回值类型公开备 注
_导入表结构_被选择  
变量名类 型静态数组备 注
创建表sql文本型 
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
mysql_C.执行SQL语句 (“use ” + mysql_database)
创建表sql = “DROP TABLE IF EXISTS `” + mysql_datatable + “`;”
如果 (mysql_C.执行SQL (表结构sql))
信息框 (“导入成功!”, 0, “提示”, )
信息框 (“导入失败!”, 0, “提示”, )
mysql_C.断开 ()
子程序名返回值类型公开备 注
_连接服务端_被选择  
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
子程序名返回值类型公开备 注
_连接客户Duan_被选择  
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
子程序名返回值类型公开备 注
_读取字段  
变量名类 型静态数组备 注
记录集MySql记录集类 
i整数型 
j整数型 
字段信息MYSQL字段信息 
返回值文本型 
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
mysql_S.执行SQL语句 (“USE ” + mysql_database)
mysql_S.执行SQL语句 (“set names GBK”)
mysql_S.执行SQL语句 (“DESC ” + mysql_datatable)
mysql_S.取记录集 (记录集)
计次循环首 (记录集.取字段总数 (), i)
记录集.取字段信息 (i - 1, 字段信息)
计次循环尾 ()
mysql_字段记录 = “`(`”
计次循环首 (记录集.取行数 (), i)
计次循环首 (1, j)
返回值 = 记录集.读文本 (j - 1)
mysql_字段记录 = mysql_字段记录 + 返回值 + “`,`”
计次循环尾 ()
记录集.到下一行 ()
计次循环尾 ()
mysql_字段记录 = 取文本左边 (mysql_字段记录, 取文本长度 (mysql_字段记录) - 2)
mysql_字段记录 = mysql_字段记录 + “) values”
超级编辑框2.内容 = mysql_字段记录 + #换行符 + 超级编辑框2.内容
mysql_S.断开 ()
子程序名返回值类型公开备 注
_开始同步_被选择  
变量名类 型静态数组备 注
开始时间文本型 
结束时间文本型 
句柄  
文件号整数型 
开始时间 = _获取当前时间 ()
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符 + 开始时间 + “    ”“开始同步操作成功!”
程序_延时 (5000)
结束时间 = _获取当前时间 ()
_读取字段 ()
如果真 (文件是否存在 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”))
写到文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, 到字节集 (“”))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
写出文本 (文件号, 超级编辑框2.内容)
关闭文件 (文件号)
循环判断首 ()
如果真 (文件是否存在 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”))
写到文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, 到字节集 (“”))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
_cha询sql (开始时间, 结束时间)
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
mysql_C.执行SQL语句 (“use se5000”)
mysql_C.执行SQL语句 (“set names GBK”)
如果 (mysql_C.执行SQL语句 (导入sql))
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“导入成功:” + 开始时间 + “    -    ” + 结束时间
' 写出文本 (文件号, #换行符 + “导入成功:” + 开始时间 + “    -    ” + 结束时间)
如果 (超级编辑框1.取行数 () < 5)
写出文本 (文件号, #换行符“未cha询到数据:” + 开始时间 + “-” + 结束时间 + #换行符“日志:” + 超级编辑框1.内容)
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“未cha询到数据:” + 开始时间 + “-” + 结束时间 + #换行符“日志:” + 超级编辑框1.内容
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“导入失败:” + 开始时间 + “-” + 结束时间 + #换行符“失败日志:” + 超级编辑框1.内容
写出文本 (文件号, #换行符“导入失败:” + 开始时间 + “-” + 结束时间 + #换行符“失败日志:” + 超级编辑框1.内容)


关闭文件 (文件号)
开始时间 = 结束时间
mysql_C.断开 ()
程序_延时 (5000)
导入sql = “”
超级编辑框1.内容 = “”
如果真 (超级编辑框2.取行数 () > 50)
超级编辑框2.内容 = “”

结束时间 = _获取当前时间 ()
循环判断尾 (取反 (是否结束))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
写出文本 (文件号, #换行符 + 结束时间 + “    ”“结束同步操作成功!”)
关闭文件 (文件号)
子程序名返回值类型公开备 注
_结束同步_被选择  
是否结束 = 真
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符_获取当前时间 ()“    ”“结束同步操作成功!”
子程序名返回值类型公开备 注
_获取当前日期文本型 
变量名类 型静态数组备 注
时间日期时间型 
文本型 
文本型 
文本型 
返回日期文本型 
时间 = 取现行时间


i支持库列表   支持库注释   
iext2扩展界面支持库二

Mysql同步工具源码.rar

2.48 MB, 下载次数: 78, 下载积分: 精币 -2 枚

mysql源码

界面 (2).jpg

界面

界面

配置文件

配置文件

日志

日志

点评

类似的工具有na开头的软件 非常成熟, 主从同步可以达到完全自动同步。 不得不说楼主成功造了一个轮子 ,能用到地方特别少   浙江省金华市  发表于 2022-8-17 21:06

评分

参与人数 1好评 +1 精币 +3 收起 理由
易语言资源网 + 1 + 3 开源精神必须支持~

查看全部评分


发表于 2023-5-25 22:34:10 | 显示全部楼层   江苏省无锡市
感谢
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2022-11-8 09:30:42 | 显示全部楼层   河北省秦皇岛市
感谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2022-10-28 09:33:40 | 显示全部楼层   黑龙江省牡丹江市
谢谢分享
回复 支持 反对

使用道具 举报

发表于 2022-8-27 16:22:34 | 显示全部楼层   新疆维吾尔自治区乌鲁木齐市
少时诵诗书所所所所所所所
回复 支持 反对

使用道具 举报

结帖率:77% (10/13)
发表于 2022-8-21 21:35:36 | 显示全部楼层   江西省赣州市
支持支持
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 8 天

发表于 2022-8-21 19:14:38 | 显示全部楼层   广东省深圳市
不错
很有用
回复 支持 反对

使用道具 举报

发表于 2022-8-20 13:45:09 | 显示全部楼层   湖北省孝感市
未用先回复,感谢分享。
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2022-8-18 19:58:57 | 显示全部楼层   吉林省延边朝鲜族自治州
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2022-8-18 16:23:27 | 显示全部楼层   广东省中山市
未用先回复,感谢分享。
回复 支持 反对

使用道具 举报

结帖率:25% (2/8)

签到天数: 12 天

发表于 2022-8-18 13:44:27 | 显示全部楼层   上海市上海市
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表