dmp导入未有xyptguid解决办法
根据考核的八大类数据,经常从部门那里拿到的dmp文件,里面并没有xyptguid的随机数字段。会出现xyptguid为空的情况。但是从我们平台里面导入的Excel表格会产生xyptguid的随机数。
这时候我们自己就需要自己建立随机数并插入到表中。
信用平台里面的xyptguid随机数是符合rfc 4122的标准(http://tools.ietf.org/html/rfc4122)
所以我们建立的随机数也需要遵循这种。
首先创建函数
CREATE OR REPLACE
FUNCTION get_uuid
RETURN VARCHAR
IS
guid VARCHAR (50);
BEGIN
guid := lower(RAWTOHEX(sys_guid()));
RETURN
substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12);
END get_uuid;
这时候我们测试该函数产生的随机数:
select` `get_uuid ``from` `dual ;
该随机数和目前数据交换系统产生的随机数格式是一致的。
后面的问题就是如何将产生的随机数,循环的插入到表中?
这时候我们就需要用到游标:(测试语句如下)
declare
*--**定义游标并且赋值(is 不能和cursor分开使用)*
cursor cur_1 is select get_uuid from dual;
*--**定义rowtype*
cur_stu T_GYSYJFXX%rowtype;
begin
*--**开启游标*
for cur_stu in cur_1 loop
*--**执行操作sql*
update T_GYSYJFXX set xyptguid= get_uuid where xyptguid is null;
*--**结束循环*
end loop;
*/***结束执行\*/*
end;
测试更新的表T_GYSYJFXX数据量为40万条,循环插入随机数后不重复且符合交换系统要求。