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");
我正在加载 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");