假设我需要与一个合作伙伴共享一个数据库。显然,我在那个数据库中有客户信息。除了仔细检查和识别包含隐私信息的每一列和用于“擦除”数据的自定义脚本之外,有没有什么工具或脚本可以擦除数据,但格式保持得当(例如,如果一个字符串是5个字符,它将保持5个字符,仅被擦除)?
如果不是,您将如何完成这样的事情,最好是在TSQL中?
发布于 2011-09-02 00:36:27
你可以只考虑共享VIEW,创建视图来隐藏你不想共享的数据。
示例:
CREATE VIEW v_customer
AS
SELECT
NAME,
LEFT(CreditCard,5) + '****' As CreditCard -- OR, don't show this column at all
....
FROM customer发布于 2011-09-02 00:40:21
首先,我需要说明我在IBM工作的专业兴趣,它有专门的工具可以做到这一点。
步骤1.确保识别所有PII (个人身份信息)。当共享数据库信息时,通常会找到像" name“这样的明显列名,但您还需要找到”隐藏“数据,其中数据是以标准格式嵌入的,例如string-name-string,而column name是类似于"reference code”的内容,或者是自由格式的文本字段。正如您所看到的,除非您将其自动化,否则这将不是一项容易的工作。用于此的工具是InfoSphere发现
步骤2.“擦除”的数据需要在什么上下文中。将命名字段更改为随机字符在测试时会出现问题,因为用户关注的是文本错误而不是功能故障,因此将名称更改为真实但虚构。信用卡信息通常需要“有效”。我的意思是它需要有一个有效的前缀,比如49XX,但其余的是无效的序列。最后,您需要确保更改的每个实例都通过数据库传播,以保持一致性。这方面的工具是Optim Test Data Management with Data Privacy option。
这两个工具集成在一起,提供了一个完整的数据隐私解决方案。
发布于 2015-12-28 05:58:18
根据最初的问题,您似乎需要字段的长度相同,但不是“有效”格式?这样如何:
UPDATE customers
SET email = REPLICATE('z', LEN(email))
-- additional fields as needed根据需要复制/粘贴并重命名表格/字段。我认为您将很难找到一个工作量较少的工具,除非您的模式非常复杂,或者我的格式假设是错误的。
现在我面前没有MSSQL数据库,但您也可以通过以下命令找到所有类似字符串的列:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE IN ('...', '...')我不记得您需要比较的确切值,但是如果您运行查询并查看其中的内容,它们应该是不言而喻的。
https://stackoverflow.com/questions/7273304
复制相似问题