一、软件安装使用说明
双击安装文件“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.dll和DbClass.dll,可在其他操作MongoDB数据的.NET framework项目中直接引用。.NET Core项目需要使用反射强制引用。
六、运行更新程序
1、手动运行
双击【SqlToMongo更新】程序,控制台一闪而过,这是因为数据量太少,执行完毕自动退出了。
查看一下Mongo数据库,发现新增了runlog和usercar两个表。
SQLServer中的数据已经被同步过去了,下面把数据修改一下,再试一下更新操作。
再次运行【SqlToMongo更新】程序。
MongoDB中的数据已经被修改,注意一下,更新其他表的配置,不会有对应的Mongo表,只是根据_id进行匹配更新。每次执行更新后,都会有日志记录。可在runlog表中进行查询。
2、设置服务自动运行
这里需要使用【SqlToMongo服务控制器】进行设置,双击打开软件。
点击【添加任务】打开添加运行任务窗口,间隔时间单位为分钟。选择【SqlToMongo更新】程序,点击【添加】按钮,即可完成添加操作。点击【安装服务】按钮,安装自动运行软件监控服务,【启动服务】后,就会定期执行列表中的任务程序。【启动服务】后可关闭服务控制器。
【SqlToMongo服务控制器】也可以定时运行其他控制台程序。但是通过该服务启动的程序,因为在不同的用户进程,会出现无法读取配置文档的情况。