存储分隔文本文件架构的最佳实践

时间:2012-12-12 21:22:40

标签: c# csv schema flat-file tsv

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

目前我有一组表格的常量内容(​​还有更多这些内容):

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

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

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

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

3 个答案:

答案 0 :(得分:0)

以下是一些有趣的信息:

Importing CSV file into Database with Schema.ini

特别是部分每次使用不同的CSV文件名或导入CSV文件 动态创建Schema.ini文件可能看起来很有希望。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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

会很棒