【发布时间】:2013-03-01 16:57:55
【问题描述】:
我有一个带有不幸动态列结构的平面文件。值层次结构中有一个值,层次结构中的每一层都有自己的列。例如,我的平面文件可能类似于:
StatisticID|FileId|Tier0ObjectId|Tier1ObjectId|Tier2ObjectId|Tier3ObjectId|Status
1234|7890|abcd|efgh|ijkl|mnop|Pending
...
第二天的相同提要可能如下所示:
StatisticID|FileId|Tier0ObjectId|Tier1ObjectId|Tier2ObjectId|Status
1234|7890|abcd|efgh|ijkl|Complete
...
问题是,我不太关心所有层级;我只关心最后(底部)层的 id,以及不属于层列的所有其他行数据。我需要将提要标准化为类似的东西以注入关系数据库:
StatisticID|FileId|ObjectId|Status
1234|7890|ijkl|Complete
...
确定最后一层对象 ID 并按描述组织数据的有效、易于阅读的机制是什么?我所做的每一次尝试都让我感觉很笨拙。
我做过的一些事情:
- 我已尝试检查正则表达式模式的列名,识别分层的列,按名称降序排列它们,然后选择第一条记录...但是我以这种方式丢失了序号列号,所以没有不好看。
- 我已将我想要的列放入
IDictionary<string, int>对象中以供引用,但再次可靠地收集动态列的序号是一个问题,而且这似乎是相当不理想的。
【问题讨论】:
-
要不要举出其他尝试的例子,这样其他尝试回答的人就不会重复这些努力?
-
对我来说这看起来不像平面文件。那是 csv。
-
@AbeMiessler 嗯,看起来也是这样。我习惯于使用具有固定列长度的平面文件。我们使用平面文件来区分固定列格式和其他格式(包括 csv)。也不知道它也用于 csv。所以我的评论可能是错误的......
-
CSV 或任何带分隔符的文本文件都是平面文件。非扁平化就是像 XML 或 JSON 这样具有结构并且可以准确表示层次结构的东西。
标签: c# parsing text formatting flat-file