日期:2014-05-17  浏览次数:20827 次

请教关于连个数据库之间数据同步的问题(在线等)
各位大神,最近做一个OA数据与考勤机数据同步的问题,请各位大神帮忙。


--一、需求描述
需要做一个类似OA系统与刷卡数据的同步。基本情况是有新员工入职,在OA中新增,数据库OA_A01中增加一条记录,此时考勤数据库的人员表KQ_A01应该也增加他的记录,然后新员工拿着考勤卡去刷卡,刷卡数据由硬件自动写入到KQ_CARD,此时需要自动同步到OA的OA_CARD.
要做的就是确保两个A01人员表同步,两个CARD的刷卡数据同步。
数据库同步过程中要做一个验证,避免重复数据的插入。
两个数据库分别为DBOA和DBKQ。
数据表和关系如下:
--------------------------id为自增列,工号唯一
OA的人员表:OA_A01
id 工号 姓名
1 10001 张三
2 10002 李四
3 20003 王五
4 10006 马六
---------------------------id为自增列,卡号唯一,卡号与工号数据一致为关联外键。
OA的刷卡表:OA_CARD
id 卡号 刷卡时间
19 10001 2012-1-1 7:15
20 10002 2012-1-1 7:26
21 10003 2012-1-1 7:55
22 10006 2012-1-1 7:32
23 10001 2012-1-1 18:15
24 10002 2012-1-1 18:26
25 10003 2012-1-1 18:55
26 10006 2012-1-1 18:32
-------------------------------id自增列,工号唯一
考勤机的人员表:KQ_A01
id 工号 姓名
11 10001 张三
12 10002 李四
13 20003 王五
14 10006 马六
------------------------------- id自增列,卡号唯一,卡号工号关联外键
考勤机的刷卡表:KQ_CARD
id 卡号 刷卡时间
19 10001 2012-1-1 7:15
20 10002 2012-1-1 7:26
21 10003 2012-1-1 7:55
22 10006 2012-1-1 7:32
23 10001 2012-1-1 18:15
24 10002 2012-1-1 18:26
25 10003 2012-1-1 18:55
26 10006 2012-1-1 18:32

请各位大神帮忙。所有分给3个最有帮助的人,感谢感谢!

------解决方案--------------------
lz 这个貌似做2个视图就可以了
在刷卡的数据库中作对应OA的人员表视图
在OA的数据库中作对应刷卡时间的视图即可。
------解决方案--------------------
引用:
假设做了视图V_OA_A01,取值为V_KQ_A01,是否将V_OA_A01的数据插入到OA_A01就可以了呢?重复性用NOT IN 排除?


用视图的方法,就两张表,一张OA的员工表,一张刷卡的记录表(无需同步,因为视图读取的都是原表数据)

OA 数据库中 
视图 v_刷卡记录表

刷卡数据库中 
v_OA_员工表
------解决方案--------------------
2005以后,使用except就可以实现差异查询,最好差异插入,因为当数据量很大的时候全量插入容易出问题。
------解决方案--------------------
引用:
引用:
再问一个,同步一半是用定时作业的方式把?你也可以考虑一下触发器吧。作业的话不实时。还有一个比较大的知识点:复制技术。可以对表进行同步。


不能用触发器,会死循环的.