异构数据库数据同步(从Progress到MySQL)
一直想写点东西,但却迟迟没有开始,今天无意中回到ERP100这个网站,发现有了QAD的专区,于是,一时热血沸腾,写了点东西,就借此机会将内容也发到这里吧,呵呵。
其实内容都是本人写的,不过为了图方便,在ERP100中写完了,然后直接Copy到这里,偷了点懒,呵呵。
以下是正文,在ERP100中的地址是
http://bbs.erp100.com/forum.php?mod=viewthread&tid=74269&page=1&extra=#pid438182
由于小弟接触QAD也只有短短几年时间,目前也只是刚刚入门的菜鸟级别,希望借此机会与熟悉QAD软件的前辈一起交流,呵呵。
项目名称:
异构数据库数据同步(从Progress到MySQL)
背景介绍:
我现在公司使用的QAD版本很老,是85g的,于是,要升级到eb2.1,但由于有很多水晶报表是直接连到QAD后台取数的,而eb2.1对连接数限制在1个,因此,公司决定将QAD的数据同步导入到MySQL数据库中,这样,只要将水晶报表的连接重新指向MySQL,就可以正常使用了。
实现思路:
要实现实时同步,最直接的就是触发器了,通过在触发器中分析各字段的值,生成SQL语句,并存入文本文件中,然后,定期调用一段Java程序,读取文本中的SQL语句,将数据插入MySQL数据库中。
注:当时在项目分析阶段,实际还有1套方案,也是通过触发器记录被修改的数据,然后写入一个自定义表的Raw字段,然后,定时执行一段Progress程序,将修改写入到MySQL中,但由于这个方案需要多占用一个Licence,因此,最终被放弃。
实现方法:
1. 设置Trigger
进入Data Dictionary(数据字典),点 Edit -> Modify Table,在弹出的窗口中输入要建Trigger的表名,例如 pt_mstr,然后,在之后的窗口中,在最下面的按钮中可以找到 Trigger 的按钮,进去之后就到了Trigger的设置界面了,这里我们主要在 Write 和 Delete 上面设置(其实,QAD的参考手册上好像是推荐的Replication-Write 和 Replication-Delete,但当时测试的时候好像有点问题,因此,没有使用。另外,Create不用管,因为,触发了Create之后一定会触发Write的),在第一个栏位填入Trigger要执行的程序(一般以.t结尾),将后面的CRC检验设置为no(否则,程序在执行时会报错),设置完后点F4退出,并在弹出的窗口中点击保存,这样,Trigger就设好了。
2. 编写Trigger代码
先看下面的代码:
TRIGGER PROCEDURE FOR WRITE OF PT_MSTR OLD BUFFER OLD_PT_MSTR./*修改数据时的Trigger*/
TRIGGER PROCEDURE FOR DELETE OF PT_MSTR./*删除数据时的
相关文档:
ysql默认是不允许远程连接的,因为有很大的安全隐患。
需要手动增加可以远程访问数据库的用户。
方法一、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"
#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
my ......
一 . 安装与配置MYSQL
二 . 常用mysql命令行命令
1 .mysql的启动与停止
启动MYSQL服务 net start mysql
停止MYSQL服务 net stop mysql
2 . netstat –na | findstr 3306 查看被监听的端口 , findstr用于查找后面的端口是否存在
3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL
......
公司的服务器是CentOS 5.4(Final)版的,今天在上面安装了一回mysql5.5,记录如下:
1、从http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.2-m2.tar.gz 下载源码安装包到/usr/local/src
2、tar zxvf mysql-5.5.2-m2.tar.gz 解压到/usr/local/src/mysql-5.5.2-m2下
cd mysql-5.5.2-m2/
&n ......
1.mysql
在如下页面下载mysql的for linux rpm包
http://www.mysql.com/downloads/down...3.52-1.i386.rpm ;
http://www.mysql.com/downloads/down...3.52-1.i386.rpm ;
存至/home/tmp目录
命令列表:
cd /home/tmp
rpm -ivh MySQL-3.23.52-1.i386.rpm #安装mysql serv ......
24小时内记录(即86400秒)
$sql="SELECT video_id,count(id)as n from `rec_down` WHERE UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(add_time)<=86400 group by video_id order by n desc ";
$sql="select a.id,a.title,b.n from video_info a,(".$sql.")b where a.id=b.video_id order by n desc limit 20";
N天内记录
......