CSV 解析器,如何自动发现列名称和类型

CSV Parser, how to auto discover col names & types

我正在加载 CVS 文件以进行数据导入。这些文件来自各种来源 ,因此 header 名称和位置经常更改。 我搜索并找到了有用的库,例如 CsvHelper & FileHelpers

问题:使用 FileHelper.net 或 CsvHelper,我们如何提取 Header 名称和 Column datatype? 这样我就可以为每个列创建一个 drop,到 map 之间的 .NET 类型 <==> 到 SQL 类型

只需读入文件的第一行,例如

string headers = File.ReadLines("MyFile.txt").First();

然后使用 class builder 构建您需要的任何 CSV 规范。

DelimitedClassBuilder cb = new DelimitedClassBuilder("MyProduct", delimiter: ",");

cb.AddField("Name", typeof(string));
cb.LastField.TrimMode = TrimMode.Both;

cb.AddField("Description", typeof(string));
cb.LastField.FieldQuoted = true;
cb.LastField.QuoteChar = '"';
cb.LastField.QuoteMode = QuoteMode.OptionalForBoth;

// etc... e.g., add a date field
cb.AddField("SomeDate", typeof(DateTime));

engine = new FileHelperEngine(cb.CreateRecordClass());

DataTable dt = engine.ReadFileAsDT("test.txt");