企业网站网站建设,wordpress更新记录,wordpress插件 自动翻译,极简风网站利用excel文件增量同步一个库的数据
现在有sqlserver和mysql两个库上的表在进行同步#xff0c;mysql上的是源表#xff0c;sqlserver上是目标表。
mysql : sqlserver :
可以看到sqlserver上表的最近一次同步日期分别是 pep表#xff1a; 2022-10-23 14:19:00.000 stu_…利用excel文件增量同步一个库的数据
现在有sqlserver和mysql两个库上的表在进行同步mysql上的是源表sqlserver上是目标表。
mysql : sqlserver :
可以看到sqlserver上表的最近一次同步日期分别是 pep表 2022-10-23 14:19:00.000 stu_info表 2023-01-01 00:00:00.000 xiaohan1表 2022-10-23 14:19:00.000 1. 获取excel需要同步的表名(读取excel文件)
先创建一个excel内容格式如下
保存好后新建一个作业文件命名为配置文件同步增量数据在这个作业文件里创建一个转换控件命名为获取excel里需要同步的表名用来获取excel里需要同步的表信息 接着创建一个转换文件命名为1.读取需要同步的表数据在这个转换文件里创建一个Excel输入控件和一个 复制记录到结果 控件 。excel输入的表格类型选择Excel 2007 XLSX (Apache POI) 将名为1.读取需要同步的表数据的转换文件保存后回到名为配置文件同步增量数据的作业文件里选择名为获取excel里需要同步的表名的转换控件的具体路径 2. 循环处理每个表的增量数据同步
在名为配置文件同步增量数据的作业文件里再创建一个作业控件命名为循环处理每个表增量同步 然后我们就需要新建一个作业文件了因为一个转换控件对应一个转换文件一个作业控件对应一个作业文件。 这个作业控件我们可以命名为 “2.表数据增量同步”内容如下4个步骤 在2.1获取上一步的表名这个对应的文件里 这个从结果获取记录需要我们去之前的excel输入控件里去复制粘贴 这个设置变量可以直接点获取字段 在2.2获取上一次同步的时间这个对应的文件里
---查询目标库上对应表在数据同步记录这张表上的最近一次同步日期
---这里是sqlserver的写法其他数据库的写法照着改
---之前从excel输入控件里读取后就把记录复制到结果里了excel的表头就成为了变量
SELECT ISNULL(MAX(TBSJ),1990-01-01) AS TBSJ FROM SYSTEM_SJTBJL A
WHERE TABLE_NAME${TARGET_TABLE_NAME}然后把查出来的每个表的对应的最新同步时间设置为变量。 在2.3同步表数据这个对应的文件里
有一个表输入和表输出我们不用更新插入的方式。因为更新插入的方式需要获取具体的表字段写死每个表都不一样所以我们使用表输入和表输出来同步。
---表输入(这是mysql的语法)
---查出源表里更新日期大于目标表的最新一次同步时间的数据
---因为这里查出来的日期是 年/月/日 时:分:秒 的格式
---所以我这里使用 str_to_date 函数是 %Y/%m/%d %T 的格式 而不是 %Y-%m-%d %T
SELECT * FROM ${SOURCE_TABLE_NAME} WHERE ${TIME_KEY}str_to_date(substr(${TBSJ},1,19),%Y/%m/%d %T)在2.4记录每次同步的情况到数据同步日志表 这个对应的文件里
我们更新完了需要马上在SYSTEM_SJTBJL(数据同步记录)这张表里插入对应的表当前同步后的时间 所以我们只需要用一个执行sql脚本的控件来执行就ok。oracle里insert后是需要commit提交事务才插入成功的。好像sqlserver和mysql都自动提交事务的
---sqlserver的语法
insert into SYSTEM_SJTBJL values(${SOURCE_TABLE_NAME},getdate());最后
记得检查转换控件和作业控件的文件位置对不对只有循环处理每个表增量同步这个作业控件要勾选执行每一个输入行因为每个表在excel里是一行一行保存读取的所以这个相当是个循环处理这也是为什么我们在循环处理每个表增量同步这个作业里写的都是变量来代替表名和字段名的。而获取excel需要同步的表名时不需要勾选循环处理每个表增量同步这个作业控件对应的作业文件底下的转换控件也不用勾选。 所有都保存了后 我们执行主作业后