我有一个分隔文件,我想在其中匿名化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
答案 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。
当然,这些数据仍然可能没有完全匿名化。将剩余数据与外部数据集组合仍可用于重建身份。有时研究协议要求将假数据注入数据集,以防止人们从其他“匿名”数据中统计重建身份。例如。
匿名化没有灵丹妙药,也不要认为名称是数据中唯一的标识符。