我想使用Entity Framework将数据从CSV文件导入到SQL数据库

时间:2016-06-29 09:59:08

标签: c# entity-framework csv

我想将CSV文件中的数据插入到SQL表中。这是我的代码,我不知道如何进一步

var readcsv = File.ReadAllText(filepath);
string[] csvfilerecord = readcsv.Split('\n');

foreach (var row in csvfilerecord)
{
  if (!string.IsNullOrEmpty(row))
  {
    foreach (var cell in row.Split(','))
    {
      var cards = new Cards
      {
        //What to do here to assign data to each column 
      };
    }
  }
}

这是我的csv文件数据

12345,cvv,18-april,name,country,address,state,city,dob,zipcode,phone,email,10
12345,cvv,18-april,name,country,address,state,city,dob,zipcode,phone,email,10

类定义

        public string nummber { get; set; }
    public string cvv { get; set; }
    public string expDate { get; set; }
    public string name { get; set; }
    public string country { get; set; }
    public string address { get; set; }
    public string state { get; set; }
    public string dob { get; set; }

2 个答案:

答案 0 :(得分:1)

您需要知道CSV的哪一列映射到哪个属性。使用此信息,您可以将值映射到属性中。

假设你有一个索引字典columnMap,你可以使用

var cells = row.Split(',');
var cards = new Cards {
  prop = cells[columnMap["prop"]],
  nextProp = cells[columnMap["nextProp"]],
  …
}

注意我不会迭代CSV中一行的单独值。

另请注意,您需要一个合适的CSV解析器来处理值包含逗号或引号时所需的转义/引用。

答案 1 :(得分:0)

var readcsv = File.ReadAllText(filepath);
string[] csvfilerecord = readcsv.Split('\n');

foreach (var row in csvfilerecord)
{
  if (!string.IsNullOrEmpty(row))
  {
    var cells = row.Split(','))
    var card = new Cards
      {
         number = cells[0], // number is in first cell
         cvv = cells[1],   // cvv is in second cell
         // ...
      };
  }
}