【SqlToMongo】windows服务定时运行SQL数据同步MongoDB

一、软件安装使用说明

双击安装文件“SqlToMongoInstall.msi”一路下一步即可。本软件实现目的是将SQLServer数据定时同步更新到MongoDB中,要求对应的数据有【时间戳】字段,软件会记录每次同步后的最后时间戳,下次进行新数据比对。

本软件实现了windows服务管理(安装卸载等)、定时任务、服务启动第三方软件、动态编译(根据SQL语句查询字段编译成实体类DLL)、反射(操作泛型参数传递、动态判断读取数据类型)等等。

下面软件的操作说明中,将演示对应的数据操作,先展示测试数据实例。

  • 用户表,记录用户的信息,将演示同步用户基本信息。

  • 车辆表,记录用户的车辆信息,将演示同步用户车辆信息。 

 

二、数据库设置

   1、填写MongoDB用户和密码,没有可不填写,Mongo地址必填,注意带端口号。SQL数据源连接账号,建议只读权限。(用户和密码不能包含“~”符号)

2、填写完毕,点击【测试连接】成功后即可进行表映射的设置。

三、添加表映射关系

 1、我们将联表查询的语句粘贴到【查询实体语句】框内,注意主键如需匹配MongoDB自增ID,需要 as _id,这样才能使用本软件进行更新匹配。时间戳字段必须转换bigint类型 as lastTime(因程序内已写死)。另外如无其他查询条件,必须添加 where 1=1 ,因为要拼接时间戳,查询最后更新数据做增量更新。

2、点击【解析字段】按钮,会自动将字段列出,选择后面的数据类型进行匹配。

3、设置表名,我们查询的是用户和车辆信息,固起名usercar。

4、设置好后,点击【保存生成】按钮即可,程序会自动保存配置到MongoDB中。

 查看MongoDB,可看到新建了test库,并增加了config配置表。主要配置信息说明如下:

  • ClassName:对应的操作实体类

  • IsUpdateOther:是否更新其他表

  • OtherClass:其他表的实体类

  • ReadSQLStr:读取数据的Sql语句

  • Timestamp:时间戳字段

5、【保存生成】后可以打开更新程序(可以手动运行或设置服务自动运行,详见后面的程序目录详细说明),更新程序会首先读取所有自更新配置进行更新,自更新完毕后会紧跟着运行关联更新,即设置了【更新其他】选项的配置项。下面就说明一下【更新其他】的设置。

四、导入数据更新其他表设置

在实际应用中,经常会查询几个字段更新另一个关系表,可以用到【更新其他】,本例中查询用户车辆信息,更新用户车辆联合信息表。 

 首先我们要确定查询用户编号uid和car,然后根据uid匹配用户表用户id,去更新car。那么我们就要把uid as _id

 SELECT [uid] as _id,[car]
       ,convert(bigint,[tagtimestamp]) as lastTime
   FROM [Test].[dbo].[car] where 1=1

当然要注意,更新字段要和被更新表的字段一直,本例中car会更新联合表中的对应用户的car。

   保存生成后,可以看到MongoDB的config中又新增了一条配置。

更新程序会根据OtherClass匹配usercar表中id==Car.id,更新用户的车辆信息。后面会用数据测试一下,测试前先介绍一下程序目录的应用程序。

五、程序目录应用程序简介

程序安装后,默认会安装到C:\Program Files (x86)\Noah\SqlToMongo目录下。

桌面生成三个快捷方式,对应目录中的应用程序。

 

程序说明
NoahServiceManager.exe服务控制程序,控制服务运行程序的安装卸载及自动运行程序间隔时间的配置。
NoahServiceRunner.exe服务运行程序,根据设置定时运行委托的程序。
SqlToMongoConfig.exe从SqlServer复制数据映射到MongoDB中,配置映射关系。
SqlToMongo.exe运行更新操作的程序。

目录下有两个dll是映射MongoDB的实体类,MongoModel.dllDbClass.dll,可在其他操作MongoDB数据的.NET framework项目中直接引用。.NET Core项目需要使用反射强制引用。

六、运行更新程序

1、手动运行

双击【SqlToMongo更新】程序,控制台一闪而过,这是因为数据量太少,执行完毕自动退出了。

查看一下Mongo数据库,发现新增了runlog和usercar两个表。

SQLServer中的数据已经被同步过去了,下面把数据修改一下,再试一下更新操作。

再次运行【SqlToMongo更新】程序。

 MongoDB中的数据已经被修改,注意一下,更新其他表的配置,不会有对应的Mongo表,只是根据_id进行匹配更新。每次执行更新后,都会有日志记录。可在runlog表中进行查询。

2、设置服务自动运行

这里需要使用【SqlToMongo服务控制器】进行设置,双击打开软件。

 点击【添加任务】打开添加运行任务窗口,间隔时间单位为分钟。选择【SqlToMongo更新】程序,点击【添加】按钮,即可完成添加操作。点击【安装服务】按钮,安装自动运行软件监控服务,【启动服务】后,就会定期执行列表中的任务程序。【启动服务】后可关闭服务控制器。

 

SqlToMongo服务控制器】也可以定时运行其他控制台程序。但是通过该服务启动的程序,因为在不同的用户进程,会出现无法读取配置文档的情况。

七、源代码下载

https://download.csdn.net/download/qw1212/20536014

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值