【问题标题】:Best practices for storing the schema of delimited text files存储分隔文本文件架构的最佳实践
【发布时间】:2012-11-30 16:41:36
【问题描述】:

我正在编写一个程序来解析几个分隔的平面文件,它需要其中的几个列。如果将来输入平面文件的格式发生变化,我不确定使我的代码易于维护/更新的最佳方法。

目前我有一组常量整数形式(还有很多):

NameListFirstNameCol = 0; 
NameListLastNameCol = 1; 
NameListAgeCol = 2; 
ClassListRoomNumCol = 0; 
ClassListRoomNameCol = 1;

以及用于分隔符的常量,例如:

NameListDelim = ',';
ClassListDelim = '\t';

我想看看是否有人对跟踪此类信息的更好方法提出建议。 (我可以假设我需要的列总是在输入中,但输入的创建者可能会更改分隔符、添加新列或重新排序列)。这是一个数据分析脚本,它会看到一些重用,但不是生产软件的主要部分。

【问题讨论】:

  • 我喜欢在 cmets 中保留一个样本输入以便于验证

标签: c# csv schema flat-file tsv


【解决方案1】:

这里有一些有趣的信息:

Importing CSV file into Database with Schema.ini

尤其是每次都使用不同的 CSV 文件名导入 CSV 文件或 动态创建 Schema.ini 文件看起来很有希望。

【讨论】:

    【解决方案2】:

    首先,您必须从文件中创建一个包含字段名称和相应索引的列表。

    例如 Dictionary 用于保留您可以从文件第一行读取的名称。拥有列名和相应索引的列表后,您可以使用 string.Split 仅使用您需要的索引来解析后续行。

    此外,您还必须存储结构所需的列列表。为了便于维护,您可以将其作为单独的 .cs 文件中的单独类保存。

    【讨论】:

      【解决方案3】:

      我编写了一个名为 JRecordBind 的库,它使用 XML Schema 描述平面文件的结构。见one of the examples

      不幸的是,它是用 Java 编写的。你可以考虑移植它。要是有 C# 版本就好了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-13
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2016-09-07
        • 1970-01-01
        相关资源
        最近更新 更多