DB2数据表Oracle数据库导入

本操作手册用作从信贷系统导出操作员基本数据、机构信息数据等基础数据,然后在客户管理平台中导入的引导手册

基础数据准备

需要先从行方获取对应的数据,获取数据的对应规则和对应字段的顺序一定要给行方人员说明清楚,然后他根据规则从信贷系统中根据你要的规则从DB2中导出数据,导出的文件是.del类型的文件

修改脚本

  1. 将行方给的.del文件放到服务器上,记录下路径,本例为/home/20190301/user.del
  2. 创建临时表
1
2
3
4
-- 只需要创建一个表结构相同的表
CREATE TABLE SYS_OPER_TEMP AS SELECT * FROM SYS_OPER WHERE 1=2;
-- 下面只会显示表的结构,没有数据
SELECT * FROM SYS_OPER_TEMP;
  1. 修改下这块代码中的**第二行为第一步中的路径,修改第三行为你要导入的表,这个地方最好是创建一个临时表,防止与服务器的数据冲突造成业务异常,同时还需要保证要导入的表不能有数据,第六行**的括号里面包裹的内容是上面创建的临时表的字段,而且字段的顺序要和del文件的顺序保持一致,然后保存为一个.ctl的文件,本例为SYS_OPER_TEMP.ctl,然后将这个文件也上传到/home/20190301目录下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
load data
infile "/home/20190301/org.del"
into table SYS_OPER_TEMP
fields terminated by "," optionally enclosed by '"'
trailing nullcols
(
USERID,
USERNAME,
LOGINID,
DEPTID,
ORGID,
PHONENUM,
IDCARDNO
)
  1. 远程登录服务器执行su - oracle切换到oracle用户,然后执行sqlplus /nolog,登录Oracle
1
2
3
4
5
6
7
8
9
10
11
[root@MCDB ~]# su - oracle
上一次登录:五 3月 1 23:53:37 CST 2019pts/2 上
-bash: $'\302\240': command not found
[oracle@MCDB ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Fri Mar 1 23:58:49 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

SQL>

  1. 执行下面的命令,开始导入数据(执行前需要修改成自己的路径和文件)
1
host sqlldr userid=jnmcbusi/123456@jnmcdb control=/home/20190301/SYS_OPER_TEMP.ctl log=/home/ctl/user.log
  1. 剩下的就是从临时表更新业务表了

附件

Oracle查询一个表的数据更新另一张表的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MERGE INTO SYS_OPER T1
USING (SELECT USERID, ORGID, DEPTID, USERNAME, LOGINID, PHONENUM, IDCARDNO
FROM SYS_OPER_TEMP) T2
ON (T1.USERID = T2.USERID)
WHEN MATCHED THEN
UPDATE SET T1.ORGID = T2.ORGID, T1.DEPTID = T2.DEPTID
WHEN NOT MATCHED THEN
INSERT
(USERID,
ORGID,
DEPTID,
USERNAME,
LOGINID,
PASSWORD,
PHONENUM,
IDCARDNO)
VALUES
(T2.USERID,T2.ORGID,T2.DEPTID,T2.USERNAME,T2.LOGINID,'e10adc3949ba59abbe56e057f20f883e',T2.PHONENUM,T2.IDCARDNO);