--0、导出数据 将数据导出为excel,再复制到UE中,保存为txt格式
select '"' ||ECIF_CUST_NO|| '",'||'"' ||replace (name,' ','') || '",'||'"' ||CERT_TYPE|| '",'||'"' ||CERT_NO || '"' as A
from t_usr_reg_info where USER_CERT_LEVEL = '05' and ECIF_CUST_NO is null ;
--1、创建临时表
create table t_usr_reg_info_temp
(
ECIF_CUST_NO VARCHAR2(14),
NAME VARCHAR2(120),
CERT_TYPE CHAR(1),
CERT_NO VARCHAR2(30)
)
--2、cmd 往临时表中灌入数据
sqlldr ebbc/ebbc@EBBC_10.16.10.54 control=e:\t_usr_mobile_reserveinfo.ctl log=e:\t_usr_mobile_reserveinfo.log errors=1000000 rows=10000 bindsize=5120000 readsize=5120000
其中,ebbcusr_x/ebbcusr_x@uatb_ebbcusr 指的是用户名和密码和数据库路径、control=f:\ecif\t_usr_mobile_reserveinfo.ctl 指的是ctl脚本文件的存放路径、log=f:\ecif\t_usr_mobile_reserveinfo.log 指的是日志的存放路径、errors=1000000执行时报错的条数,超过了就会打断不会继续往下走了,但是执行的了,就会事物提交、 rows=10000
每次提交事物的条数、其中,具体见t_usr_mobile_reserveinfo.ctl,里面会筛选出没有成功的数据
--其中,t_usr_mobile_reserveinfo.ctl文件具体内容
LOAD DATA
CHARACTERSET UTF8 --编码格式
INFILE 'E:\ecif_cust_no_bak.txt' --导出的数据,按"20380000299000","文学蓉","0","510624196304284868"格式添加到临时表中
BADFILE 'E:\ecif_cust_no_bak.bad' --执行失败的数据
APPEND
INTO TABLE t_usr_reg_info_temp
FIELDS TERMINATED BY "," --按逗号分隔
OPTIONALLY ENCLOSED BY '"' --去除双引号
TRAILING NULLCOLS
(
ECIF_CUST_NO ,
Name ,
CERT_TYPE ,
CERT_NO
)
--3、验证数据
select * from t_usr_reg_info_temp
--4、更新数据
update t_usr_reg_info a set a.ecif_cust_no=(select b.ecif_cust_no from t_usr_reg_info_temp b where a.cert_no=b.cert_no and a.cert_type=b.cert_type)
where (cert_no,cert_type) in (
select cert_no,cert_type from t_usr_reg_info_temp
);