电力检修|异地同构数据库合并在电力系统中的应用

   日期:2016-03-26     来源:建材之家    作者:安防之家    浏览:128    评论:0    
核心提示:异地同构数据库合并在电力系统中的应用罗鸣,陈轶佳,龙建忠(四川大学,四川成都 610064)摘 要:提出了一种新颖的方案,该方案有效地解决了在电力系统数据库实际应用中遇到的特定的异地同构数据库合并问题。该方案利用SQLSERVER2000提供的DBLIBRARY编程接口并通过C++语言加以了实现。还介绍了利用C++通过DBLIBRARY实现对SQLSERVER数据库的操作方法。采用这种编程方法,电

电力检修|政治宣传员的职责

推荐简介:1、协助站长做好本站职工的思想政治工作,使全站同志不断提高政治觉悟。2、宣传党的四项基本原则,加强班组思想政治工作,班组成员做到爱党、爱国、爱厂、爱岗,不断推进班组精神文明建设,培育有理想、有道德、有文化、有纪律的职工队伍。3、认真组织政治学习,宣传党的路线、方针、政策及上级规定的其他学习内容,不断提高班组成员的思想觉悟,保证各项生产和工作任务的完成。4、以“安全优质供用电,人民电业为人民”为主题......
安防之家讯:cript>异地同构数据库合并在电力系统中的应用
罗鸣,陈轶佳,龙建忠(四川大学,四川成都 610064)
摘 要:提出了一种新颖的方案,该方案有效地解决了在电力系统数据库实际应用中遇到的特定的异地同构数据库合并问题。该方案利用SQLSERVER2000提供的DBLIBRARY编程接口并通过C++语言加以了实现。还介绍了利用C++通过DBLIBRARY实现对SQLSERVER数据库的操作方法。采用这种编程方法,电力系统数据库开发人员可以根据实际情况对数据库进行特定操作,具有极大的灵活性。
关键词:电力系统数据库;同构数据库合并;SQLSERVER2000;DBLIBRARY随着时代的发展,各个电力企业已经加快了自己信息化的进程,办公自动化(OA)、MIS系统、电力市场和营销系统、电力调度系统(EMS)、配电管理系统(DMS)、呼叫中心(CallCenter)以及电力自动化管理系统已经有广泛的应用。对这些应用而言,数据库均在其中扮演了重要的角色。微软公司的SQLSERV-ER2000数据库具有高性能、可靠性和方便应用的特点,目前已被中国的电力企业广泛采用。
由于行业的特殊性,电力系统的数据库应用环境非常复杂。在实际工作中往往有一些同构数据库同时运行在独立的服务器上。到了一定的时候,由于工作环境变化、服务器升级或数据备份等各种原因,需要将这些异地同构数据库里面的数据合并到一起,存储在同一台服务器上。解决这类问题的传统方案是利用SQLSERVER2000提供的DTS(数据转换服务)功能来实现。然而,由于各个服务器之间相互独立(不提交协议),利用DTS功能的方案往往会遇到数据冲突的问题。
数据冲突的情况往往集中在主键的冲突上。在数据库的表中,往往存在着一个主键,这个主键作为各项记录的唯一标识,是不能重复的。将这个主键作为一张表的标识列,从1开始,逐步递增,命名为MAINID,是最通用的做法。其他的表往往是将这个MAINID作为一个外键索引,通过它来定位其中的各条记录。由于几台服务器之间相互独立,这个MAINID很可能相同。在将具有相同MAINID的数据导入到同一个数据库时,如果不作事先的处理,将肯定出现数据冲突。
针对这种情况,提出了自己编写数据转换接口的方案,将各异地同构数据库里面的数据作适应性的转换后再导入到同一服务器中。

1 方案介绍
为了清楚地说明问题,这里举一个电站地质勘探情况数据库的例子。
1.1 数据库结构介绍
为了说明问题,将实际的数据库结构做了简化。
数据库DB有两个表:MAIN表和DATA表。两表的数据项如下表所示:
MAIN表作为主表,其MAINID项作为主键,且作为表的标识列,种子为1,递增步长为1,具有唯一性,唯一对应着一个勘测地区。Directory数据项表示存储相应地区的地质勘测图像文件的文件夹名。
DATA表中MAINID作为外键索引,对应着MAIN表中的数据。表明该行数据的PicName数据项代表的地址勘测图像文件存储在MAIN表中具有相同MAINID的Directory数据项代表的文件夹下面,Pic-Name数据项服从UNIQUE约束,也就是说文件名是唯一的,不能重复。
1.2 方案的主要步骤
(1)登陆到源数据库。源数据库就是各个独立的数据库。
(2)将MAIN表和DATA表的数据分别导出到oldmain.txt和olddata.txt文件中。文件的第一行存储数据项的数目,之后每行对应着数据库中相应表的一条记录,同一行每一列数据之间用逗号“,”隔开。最后一行是自定义的文件结束标志“~”。
例如,oldmain.txt里的数据可能是这样的:

(3)将main表中最小的MAINID存储在min-mainid.txt文件中。
(4)连接到目标数据库。目标数据库往往就是最终数据所在的数据库。
(5)将目标服务器main表中最大的MAINID存储在maxmainid.txt文件中。
(6)根据maxmainid.txt和minmainid.txt文件里的数据,计算出源数据库里的MAINID的改变量,计算公式如下:
ChangeMent=MaxID+1-MinID
其中,ChangeMent是源数据库中MAINID的改变量,MaxID是目标数据库中最大的MAINID,MinID是源数据库中最小的MAINID。
(7)逐行读取oldmain.txt,olddata.txt文件,根据求出的ChangeMent,将对应的MAINID修改后,再写入到新的文件newdata.txt,newmain.txt中。MAINID的修改公式如下:
NewID=OldID+ChangeMent
其中,NewID是修改后的MAINID,也就是入到目标库后,该项数据对应的MAINID;OldID是该项数据在源数据库中的MAINID,ChangeMent是上面计算出来的MAINID的该变量。

(8)将newdata.txt,newmain.txt中的数据逐行读出,插入到目标机数据库中去。
(9)退出。
上述步骤的流程如图1所示。
2 编程方法
在这里介绍一下利用DBLIBRARY编程操作SQLSERVER2000数据库的方法。
2.1 DBLIBRARY介绍
DBLIBRARY是SQLSERVER2000提供的用C语言开发SQLSERVER2000应用程序的函数库。他包含了一系列应用程序编程接口(API)和一些用于与SQLSERVER2000通信的宏(macros)。他提供了连接到SQLSERVER2000服务器的函数,向SQLSERV-ER2000发送T-SQL命令及获取这些命令的结果的函数,还提供了异常处理以及数据转换等相关的功能函数。2.2 利用DBLIBRARY编程的过程
下面的代码完成了登陆到数据库,读出数据库DB里面MAIN表里面的数据,并一行行写入到old-main.txt的功能。

interr_handler(PDBPROCESS,INT,INT,INT,LPCSTR,LPCSTR);//声明errorhandler和messageintmsg_handler(PDBPROCESS,DBINT,INT,INT,LPC-STR,LPCSTR,LPCSTR,DBUSMALLINT);
main(){//主函数
PDBPROCESSdbproc;//与SQLServer的连接结构
PLOGINREClogin;//登陆信息




以上程序说明了利用DBLIBRARY开发数据库应用程序的通用步骤,现将要点总结如下。
(1)dberrhandle和dbmsghandle:dberrhandle:安装了用户自定义的错误处理函数,这是一个回调函数,当发生DVLIBRARY定义的错误时,系统会自动调用这个函数。类似的,dbmsghandle安装了用户自定义的消息处理函数。
(2)dblogin:返回一个LOGINREC结构,用来登陆到服务器。两个辅助函数DBSETLPWD和DB-SETLUSER设置了用户ID和登陆密码。
(3)dbopen建立了一个和SQLSERVER的连接,返回了一个DBPROCESS类型的结构,该结构扮演了在应用程序和SQLSERVER之间协调的角色。当该函数执行成功后,应用程序就可以向SQLSERVER发送T-SQL查询语句并处理查询结果了。之后的操作都可以利用这个返回的DBPROCESS类型的结构进行数据库相关操作指导退出。
(4)dbcmd用用户的TSQL查询语句填充命令缓冲区。
[1][2]下一页
安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
广告
 
打赏
 
更多>文章标签:安防之家 ;相关产品:
更多>同类头条资讯
0相关评论

推荐图文更多...
点击排行更多...
防盗商圈内事更多...
最新视频更多...
推荐产品更多...
水泥之家 | 橱柜之家 | 机械之家 | 水电之家 | 五金之家 | 家电之家 | 墙布头条 | 饰品头条 | 模具头条 | 家纺头条 | 建材群站 | 建材资讯 | 建材产品 | 俱乐部 | 装修之家 | 建材商机 | 装修问答 | 知名品牌 | 家装展会 | 装修效果图 | 商企动态 | 瓷砖之家 | 安防之家 | 灯具之家 | 门窗头条 | 地板头条 | 环保头条 | 暖气之家 | 玻璃幕墙 | 吊顶之家 | 隔断屏风 | 楼梯铁艺 | 家具之家 | 卫浴头条 | 石材园林 | 板材钢板 | 油漆头条 | 家纺头条 | 水泥之家 | 橱柜之家 | 家电之家 | 水电之家 | 五金之家 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 漳州建材 | 泉州建材 | 三明建材 | 莆田建材 | 合肥建材 | 宣城建材 | 池州建材 | 亳州建材 | 六安建材 | 巢湖建材 | 宿州建材 | 阜阳建材 | 滁州建材 | 黄山建材 | 安庆建材 | 铜陵建材 | 淮北建材 | 马鞍山建材 |
建材 |  区快洞察 |  智控链 |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap |
(c)2015-2017 Bybc.cn SYSTEM All Rights Reserved
Powered by 防盗头条