mysql迁移到db2实践记录

来源:互联网 发布:python 创建对象 编辑:程序博客网 时间:2024/06/05 00:25

现有系统struts2+spring3+myibatis+mysql

现在要迁移到db2,mysql有好多的sql和db2不兼容,需要改sql。

1、数据迁移

用jpa在per*.xml中配置两个数据源,eclipse新建jpa实体,插入db2,生成数据库的表,然后再导入数据到db2。

注意有关键字,例如,type,path等。

2、sql改造

把分页的sql改成db2的sql,例子如入:

 SELECT loan.*,biddingAmount/amount as schedule FROM loan WHERE ( loan.STATUS=300 OR loan.STATUS=400 OR loan.STATUS=500) AND openTime IS NOT NULL  AND (values DAYS(current timestamp)-DAYS(openTime))<8  ORDER BY schedule ASC, loan.status ASC, loan.loanId DESC limit 1,10


改为

SELECT * FROM (  SELECT ROWNUMBER() OVER() AS RN, loan.*,biddingAmount/amount as schedule FROM loan WHERE ( loan.STATUS=300 OR loan.STATUS=400 OR loan.STATUS=500) AND openTime IS NOT NULL  AND (values DAYS(current timestamp)-DAYS(openTime))<8  ORDER BY schedule ASC, loan.status ASC, loan.loanId DESC ) AS A WHERE A.RN>=1 AND A.RN<=10

把mysql的now()函数改为(VALUES CURRENT TIMESTAMP)

日期加几天,主要用于登陆失败10次后锁定账户:

UPDATE user_login_failure SET lastLocked=DATE_ADD(NOW(), INTERVAL #{expr} DAY) WHERE userId=#{userId}

改为:

UPDATE user_login_failure SET lastLocked=(values current timestamp +#{expr} DAYS) WHERE userId=#{userId}


 


UPDATE user_login_failure SET lastLocked=(values current timestamp +#{expr} DAYS) WHERE userId=#{userId}


 


DATE_ADD(NOW(), INTERVAL #{expr} DAY)

 

3、db2导入导出

 

db2look -d mgmt -o d:\mgmt.sql -i username -w pwd

4、db2中删除表的字段后执行,否者不能更新数据

 runstats on table administrator.loan_investor;
reorg table administrator.loan_investor;

5、SQL 增加或删除一列 

       alter table loan_investor add payFlowId varchar(50) NULL;

alter table tablename drop column columnname;————删除一列

6、mybatis多条数据返回类型是一个汇报如下错误

 nested exception is java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:


0 0
原创粉丝点击