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万条,循环插入随机数后不重复且符合交换系统要求。

原文地址:https://www.cnblogs.com/jianshuai520/p/14215930.html