我是SQL C的新手,我想知道是否可以在DB2中运行SQL语句,该语句可以遍历所有表并更改(可以是置乱、替换、随机或其他任何方式)找到的任何10DGIT电话号码。在坚果外壳中,对所有表中的所有字段执行全局搜索和替换,以混淆任何电话号码(私人信息)。
我需要把一个客户的DB2数据库(17个表)交给一个软件供应商来做一些报告,但我的任务是确保在这个过程中没有暴露真实的电话号码。我确信有一个SQL语句可以处理单个表(然后我可以进入DB2控制中心并运行它17倍),但我正在寻找一种快速,干净的方法来“准备”这个数据库,然后再将它发送出去。
提前感谢你,DB2大师!
麦克
发布于 2013-08-16 16:59:28
如果要在db2中隐藏信息,则应使用these functions
或IBM数据库Encryption Expert
这些函数是用于varchar的,而我认为您有一个int列,所以它不起作用。
但是,您可以通过应用UDF和查询目录来隐藏不同表中的所有电话号码。
例如,您的UDF (用户定义函数)可以将电话乘以一个您只知道的给定号码。然后,为了解密它,你只需要除以相同的数字。
然后,要将此过程应用于所有表,您必须查询目录。例如,
select tabschema, tabname
from syscat.columns
where colname like 'PHONE%'一旦确定了这些表,就可以使用UDF对其进行更新
select 'update ' || trim(tabschema) || '.' || trim(tabname) || ' set ' || trim(colname) || ' = myUDF(' || colname || ', 5) ;' from syscat.columns where colname like 'PHONE%'假设5是你的加密号。
您只需执行输出即可隐藏电话。
https://stackoverflow.com/questions/18243973
复制相似问题