首页 新闻 会员 周边 捐助

帮忙想个解决方案

0
悬赏园豆:50 [已解决问题] 解决于 2010-08-13 10:36

项目:数据采集

底层采集数据之后进行录入,存入临时库(多个),接着上报给上级部门,上级部门审批后入采集库。

现在想实现一个数据下发的程序,因为底层采集录入时有的字段是选择的,数据源就是采集库中的数据。 所以想把这些采集库数据下发到临时库(多个)。

 

我的解决方案:写了一个Windows服务,把所有的数据库和要下发的表结构都用Xml文档说明,然后一条一条读取采集库数据,再写到每个临时库中去(如存在,就修改)。

 

感觉好麻烦呢?谁帮忙想个好的方案?

 

 

 

gzl的主页 gzl | 初学一级 | 园豆:5
提问于:2010-08-12 11:26
< >
分享
最佳答案
0

用SQL Server的复制功能将多个临时库中的最新记录同步到你的采集库中.

你需要定制复制的sql语句,用一个字段表名是否是通过了上级的审批.只有该字段值为真的情况下才同步给采集库.

领导审批后,就给临时库中的数据记录标记为通过审批.

收获园豆:10
Launcher | 高人七级 |园豆:45050 | 2010-08-12 11:49
这个数据库不一定是sqlserver
gzl | 园豆:5 (初学一级) | 2010-08-12 14:35
@gzl:Oracle,db2 都行,只要你有一台sql2005/2008服务器就OK了.同时使用通用数据类型,以及表名长度使用多数据库中的最小限制等. 你看下SQL Server 的复制功能.目前,我们公司全部采用此种方式向客户发布数据,替换掉了曾经自己编写的同步程序,客户中有使用Oracle的服务器.
Launcher | 园豆:45050 (高人七级) | 2010-08-12 15:01
都是Oracle数据库的情况
gzl | 园豆:5 (初学一级) | 2010-08-13 10:33
@gzl:都是Oracle那更好办了啊!本来我说用SQL Server的功能就是为了支持异构数据库,现在你清一色的Oracle,让Oracle DBA帮你们弄数据同步就OK了。使用数据库自身的功能能极大的简化你们的开发工作,而且也更稳定。
Launcher | 园豆:45050 (高人七级) | 2010-08-13 10:42
其他回答(2)
0

如果这个数据采集的操作是实时,并且不是人为操作。

1、确定用window服务结合timer来实现轮询实现。

2、可以按照你的思路,用xml保存数据和数据库必要字段的对应关系。

3、在启动服务之前,设置必要的参数〔即采集数据和数据库字段的对应〕保存到xml中。

4、至于更新到数据库操作。如果数据是实时的一条一条的,那你只能用一个sql或者存储过程来实现插入。如果不需要很强的实时性,那么可以采用一个时间段内执行一次数据的批量更新。用SqlCommandBuilder实现。或者事务来逻辑处理。

 

 

收获园豆:10
邢少 | 园豆:10926 (专家六级) | 2010-08-12 11:44
这就是我的思路
支持(0) 反对(0) gzl | 园豆:5 (初学一级) | 2010-08-12 12:54
@gzl:思路没错。有什么麻烦的吗?.先看看其它同学怎么说吧。
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2010-08-12 15:38
0

我们也是用系统服务来解决的,不过有时候感觉会挂掉,服务不好调试和管理,不如挂个程序在后台运行,有时候出现还可以断续或停止。

收获园豆:30
Astar | 园豆:40805 (高人七级) | 2010-08-12 14:10
挂个程序在后台运行,有时候出现还可以断续或停止 怎么讲?
支持(0) 反对(0) gzl | 园豆:5 (初学一级) | 2010-08-12 14:34
@gzl:就是写个程序运行你服务要做的事。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-12 14:36
@Astar:给你的windows服务提供进程外COM接口,或socket接口,就可以通过一个客户端程序来操控你的windows服务组件。
支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2010-08-12 16:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册