您的位置:首页 > 数据库 > Oracle

db2数据迁移到oracle

2017-11-28 17:14 239 查看
其他数据库的数据导到Oracle数据库中,可以通过从一个数据库中把数据以文件方式导出,例如是csv格式的文件,然后使用Oracle的sqlldr的命令 加载文件的方式 加载到Oracle中。

参考链接地址:http://www.cnblogs.com/atwanli/articles/6273962.html

1.导出db2原始数据

db2 "EXPORT TO ft_user.csv OF DEL
SELECT ROW_NUMBER() OVER() AS DBID,
COALESCE(TO_CHAR(TRANS_UPDATETIME,'yyyymmdd'),TO_CHAR(SYSDATE,'yyyymmdd')) AS FRONT_DATE,
COALESCE(TO_CHAR(TRANS_UPDATETIME,'HH24mmss'),TO_CHAR(SYSDATE,'HH24mmss')) AS FRONT_TIME,
'000000' AS FRONT_SEQ,
MER_ID AS BUSS_NO,
USER_ACCTNO AS CARD_NO,
0 AS SIGN_STAT,
COALESCE(TO_CHAR(TRANS_BEGINDATETIME,'yyyy-mm-dd HH24:mm:ss'),TO_CHAR(SYSDATE,'yyyy-mm-dd HH24:mm:ss')) AS CREATE_TIME,
COALESCE(TO_CHAR(TRANS_UPDATETIME,'yyyy-mm-dd HH24:mm:ss'),TO_CHAR(SYSDATE,'yyyy-mm-dd HH24:mm:ss')) AS MODIFY_TIME
FROM FT_USER"


 数据格式:

1,"20150916","180950","000000","800000000000039","5289489950000196",0,"2015-09-16 18:09:50","2015-09-16 18:09:50"
2,"20151022","161008","000000","800000000000040","5289489950000196",0,"2015-09-17 09:09:24","2015-10-22 16:10:08"
3,"20151021","101030","000000","800000000000040","4218719930000406",0,"2015-10-12 14:10:56","2015-10-21 10:10:30"
4,"20151110","101113","000000","800000000000023","5289489950000196",0,"2015-10-22 17:10:57","2015-11-10 10:11:13"
5,"20151110","101155","000000","800000000000023","4218719930000406",0,"2015-10-22 17:10:59","2015-11-10 10:11:55"
6,"20151222","141241","000000","800000000000039","4218710000004071",0,"2015-12-07 10:12:36","2015-12-22 14:12:41"


 

2.导入oracle数据

orale表结构

CREATE TABLE ALIPAY_SIGN(
DBID            NUMBER(20)      NOT NULL PRIMARY KEY,
FRONT_DATE      VARCHAR2(8)     NOT NULL,
FRONT_TIME      VARCHAR2(6)     NOT NULL,
FRONT_SEQ       VARCHAR2(60)    NOT NULL,
BUSS_NO         VARCHAR2(15)    NOT NULL,
CARD_NO         VARCHAR2(19)    NOT NULL,
SIGN_STAT       VARCHAR2(1)     NOT NULL,
CREATE_TIME     DATE            NOT NULL,
MODIFY_TIME     DATE            NOT NULL,
UNIQUE(BUSS_NO,CARD_NO)
);
CREATE SEQUENCE ALIPAY_SIGN_DBID_SEQ MINVALUE 1 MAXVALUE 9999999999999999999 INCREMENT BY 1 NOCYCLE;


 

 ft_user.ctl脚本

load data
append into table "ALIPAY_SIGN"
fields terminated by "," optionally enclosed by '"'
trailing   nullcols
(DBID "ALIPAY_SIGN_DBID_SEQ.nextval",FRONT_DATE,FRONT_TIME,FRONT_SEQ,BUSS_NO,CARD_NO,SIGN_STAT,CREATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",MODIFY_TIME DATE "YYYY-MM-DD HH24:MI:SS")


 

 运行脚本

sqlldr userid=user/passwd control=/tmp/ft_user.ctl log=/tmp/ft_user.log data=/tmp/ft_user.csv rows=1000


在实际中,需要通过编写shell脚本的形式,做到可配置的方式来加载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: