匿名化数据元素分隔文件

时间:2015-12-18 16:45:50

标签: c# sql-server

我有一个分隔文件,我想在其中匿名化SQL表中的名字,姓氏和中间名。请使用c#建议任何好方法。

分隔文件:

Spec: SegmentName*Qualifier*Id*LastName*FirstName*MiddleName
NM1*IL*12345*JOHN*SMITH*A
NM1*IL*87912*BRYAN*JOE*A
NM1*IL*932578*STEVE*BILL*A

SQL TABLE:

Id, LastName, FirstName, MiddleName
12345, Perry, Ellis, G
87912, Jerry, Fish, M
932578, Gary, Todd, T

所需结果分隔文件:

NM1*IL*12345*Perry*Ellis*G
NM1*IL*87912*Jerry*Fish*M
NM1*IL*932578*Gary*Todd*T

2 个答案:

答案 0 :(得分:1)

尝试这样的事情

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\text.txt";
        static void Main(string[] args)
        {

            string connStr = "Enter Your connection string here";
            string SQL = "Enter your SQL here like Select * from table1";

            SqlDataAdapter adapter = new SqlDataAdapter(SQL, connStr);
            DataTable dt = new DataTable();

            adapter.Fill(dt);

            StreamWriter writer = new StreamWriter(FILENAME);

            foreach (DataRow row in dt.AsEnumerable())
            {
                writer.WriteLine(string.Join("*", row.ItemArray));
            }

            writer.Flush();
            writer.Close();

        }
    }
}
​

答案 1 :(得分:0)

我们需要知道回答问题的适用范围。 “匿名化”对你意味着什么?您已经有一个id字段,因此您可能根本不包含名称,从某种意义上说这将是“匿名”。但对于那些有权访问id号码的人来说,它并不是匿名的。在这种情况下,您可能希望使用Guid.NewGuid()将随机Guid标识符替换为id,lastname和firstname all。

当然,这些数据仍然可能没有完全匿名化。将剩余数据与外部数据集组合仍可用于重建身份。有时研究协议要求将假数据注入数据集,以防止人们从其他“匿名”数据中统计重建身份。例如。

匿名化没有灵丹妙药,也不要认为名称是数据中唯一的标识符。