C# 计算/查找文本文件的列分隔符

C# 计算/查找文本文件的列分隔符,c#,ssis,delimiter,C#,Ssis,Delimiter,有没有人有好的方法来计算/查找给定文本文件的列分隔符?我愿意接受任何建议,无论是涉及C#脚本、Powerscript等 我有一个客户,他喜欢通过几乎每隔一次数据馈送就更改一次列分隔符来让我们站稳脚跟。这显然破坏了我们的SQL代理导入工作。虽然我可以选择失败的路径——如果这个连接管理器(例如带有逗号分隔符)失败,请使用另一个连接管理器(以制表符分隔的连接)——但我更愿意在失败之前评估分隔符,并决定采用哪条路径。任何人都有这样做的经验吗?假设每一行的列数相同,您总是可以选择一组常用分隔符(逗号、制表

有没有人有好的方法来计算/查找给定文本文件的列分隔符?我愿意接受任何建议,无论是涉及C#脚本、Powerscript等


我有一个客户,他喜欢通过几乎每隔一次数据馈送就更改一次列分隔符来让我们站稳脚跟。这显然破坏了我们的SQL代理导入工作。虽然我可以选择失败的路径——如果这个连接管理器(例如带有逗号分隔符)失败,请使用另一个连接管理器(以制表符分隔的连接)——但我更愿意在失败之前评估分隔符,并决定采用哪条路径。任何人都有这样做的经验吗?

假设每一行的列数相同,您总是可以选择一组常用分隔符(逗号、制表符、管道等),并计算前这么多行中每个分隔符的数量。如果前5行的逗号计数为
34,34,35,34,36
,而这些行的制表符计数为
0,0,1,0,0
,则可能有34个逗号分隔的列,文本中嵌入了一些额外的逗号。如果您提前知道需要多少列,这会更容易

底线是,它可能不是一个确定的黑白算法,而是根据数据通常的样子选择一些规则和阈值,然后让代码做出最佳猜测


或是打到客户身上。:-)

如果您的客户随意更改输入,只需增加软件修改的计费时间。但对于你的问题,我不认为一个脚本能够“猜测”仅仅看到文本的分隔符是什么。你需要和你的客户决定一个协议。例如,如果名称字段有
Samuel,Jhon
,则不能使用
作为分隔符。因为它可以是一个字段名,也可以是两个字段名和LastName