0

我是 DB2 Express-C 的新手,想知道是否可以在 DB2 中运行一条 SQL 语句,该语句可以遍历所有表并更改(可能是打乱、替换、随机等)找到的任何 10 位电话号码。简而言之,对所有表中的所有字段进行全局搜索和替换,以混淆任何电话号码(私人信息)。

我需要将客户的 DB2 数据库(17 个表)交给软件​​供应商以进行一些报告,但我的任务是确保在此过程中不会暴露真实的电话号码。我确信有一个 SQL 语句可以处理单个表(然后我可以进入 DB2 控制中心并运行 17 次),但我正在寻找一种快速、干净的方法来在发送之前“准备”这个数据库。

在此先感谢您的 DB2 专家!

麦克风

4

1 回答 1

0

如果你想在 db2 中隐藏信息,你应该使用这些函数

  • 加密
  • DECRYPT_BIN
  • DECRYPT_CHAR
  • 获得提示

或 IBM 数据库加密专家

这些函数用于 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 是您的加密数字。

您只需执行输出即可隐藏电话。

于 2013-08-16T08:59:28.140 回答