0

第一次使用 csvReader - 注意它需要一个自定义类来定义 CSV 文件中的标题。

class DataRecord
{
    //Should have properties which correspond to the Column Names in the file 
    public String Amount { get; set; }
    public String InvoiceDate { get; set; }......
}

然后给出的示例使用这样的类:-

            using (var sr = new StreamReader(@"C:\\Data\\Invoices.csv"))
        {
            var reader = new CsvReader(sr);

            //CSVReader will now read the whole file into an enumerable
            IEnumerable<DataRecord> records = reader.GetRecords<DataRecord>();

            //First 5 records in CSV file will be printed to the Output Window
            foreach (DataRecord record in records.Take(5)) 
            {
                Debug.Print("{0} {1}, {2}", record.Amount, record.InvoiceDate, ....);
            }

两个问题:- 1. 该应用程序将加载具有不同标题的文件,因此我需要能够即时更新此类 - 这可能吗?如何?(我能够从 CSV 文件中提取标题。)

  1. CSV 文件可能有数百万行(gb 大小),因此这是导入文件的最佳/最有效方式。

Destination 是一个 SQLite DB - 以调试行为例。

谢谢

4

1 回答 1

0
  1. 该应用程序将加载具有不同标题的文件,因此我需要能够即时更新此类 - 这可能吗?如何?

尽管使用反射或第三方库绝对有可能,但对于如此大的文件,为一行创建一个对象将是低效的。此外,在这种情况下使用 C# 是一个坏主意(除非您有一些业务数据转换)。我会考虑这样的东西或者可能是 SSIS 包。

于 2015-03-15T17:32:50.190 回答