24

我需要使用真实客户信息(姓名、地址、电话号码等)获取生产数据并将其移动到开发环境中,但我想删除任何真实客户信息的表象。

这个问题的一些答案可以帮助我生成新的测试数据,但是如何替换生产数据中的这些列,但保留其他相关列?

假设我有一张包含 10000 个假名的表。我应该使用 SQL 更新进行交叉联接吗?或者做类似的事情

UPDATE table
SET lastname = (SELECT TOP 1 name FROM samplenames ORDER By NEWID())
4

3 回答 3

17

如果您了解数据库,这比听起来容易。必要的一件事是了解个人信息未标准化的地方。例如,客户主文件将具有名称和地址,但订单文件也将具有可能不同的名称和地址。

我的基本流程:

  1. 标识数据(即列)以及包含这些列的表。
  2. 标识这些列的“主”表,以及这些列的非规范化实例。
  3. 调整主文件。与其尝试将它们随机化(或使它们变得虚假),不如将它们连接到文件的密钥。对于客户 123,将名称设置为 name123,将地址设置为 123 123rd St, 123town, CA, USA,电话 1231231231。这还有一个额外的好处,就是让调试变得非常容易!
  4. 通过从主文件更新或进行相同类型的去个性化来更改非正常实例

它看起来并不漂亮,但它确实有效。

于 2008-11-04T00:20:43.347 回答
14

匿名化数据可能很棘手,如果做得不正确,可能会给您带来麻烦,就像AOL 不久前发布搜索数据时发生的事情一样。在尝试转换现有客户数据之前,我会不惜一切代价尝试从头开始创建测试数据。事情可能会导致您能够使用诸如行为分析和其他您可能不认为敏感的数据点之类的东西来确定数据属于谁。我宁愿安全也不愿后悔。

于 2008-11-03T23:24:45.503 回答
8

有几个工具可以从我发现的数据库中删除敏感数据。请注意,我自己没有尝试过任何一个:

这里还有一组清理数据库脚本可能会有所帮助:https ://gist.github.com/Tyriar/d3635c6b6e32ac406623

于 2015-09-09T13:30:59.290 回答