.csv文件可以用作Visual Studio 2008中的数据源吗?

时间:2010-03-31 02:40:01

标签: c# visual-studio-2008 csv

我是C#和Visual Studio的新手。我正在编写一个小程序,它将读取.csv文件,然后将读取的记录写入SQL Server数据库表。 我可以手动解析.csv文件,但我想知道是否有可能以某种方式“描述”.csv文件到Visual Studio,以便我可以将它用作数据源?我应该提到.csv文件中的前两行包含标题信息,以下行是以逗号分隔的实际数据。

另外,我应该提一下,这个程序是一个没有用户界面的独立控制台程序。

5 个答案:

答案 0 :(得分:3)

这是使用LINQ功能的一个很好的例子。 Here's a quick reference以及如何操作的示例。

失败就是这样。您可以将CSV读入字符串数组,然后使用LINQ查询该集合。正如Reed指出的那样,你必须围绕标题行进行编码,因为它会抛弃你的查询。

您也可以使用TextFieldParser来处理转义逗号。 Here's在thinqlinq上使用TextFieldParser来解析文件的示例,以及用于获取结果的LINQ查询。它甚至还有一个单元测试,以确保处理转义的逗号。

答案 1 :(得分:1)

如果您有2行标题,则它不是标准的CSV文件。

在这种情况下,自动工具将无法工作,您将不得不恢复手动解析文件。

如果您想删除其中一个标题行,则可以使用this technique of parsing CSV files into an ADO.NET DataTable

但是,如果没有,Microsoft.VisualBasic.dll程序集中的TextFieldParser(也可以从C#中使用)使解析CSV文件变得非常简单。

答案 2 :(得分:1)

手动解析它非常简单,你可以有一个解析它的程序,删除前两个不必要的行,然后直接将它提供给SSIS。

以下是使用LINQ读取它的链接: http://blogs.msdn.com/wriju/archive/2009/05/24/linq-to-csv-getting-data-the-way-you-want.aspx

答案 3 :(得分:1)

通过C#使用内置OLEDB CSV解析器来解析CVS文件。 您可以找到示例here

它基本上允许您将csv文件视为数据库表。

答案 4 :(得分:1)

Development 4.0的帖子中的链接消失了。该链接中的代码如下:

class CSVParser
 {
   public static DataTable ParseCSV(string path)
   {
     if (!File.Exists(path))
    return null;

string full = Path.GetFullPath(path);
  string file = Path.GetFileName(full);
  string dir = Path.GetDirectoryName(full);

  //create the "database" connection string 
  string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
    + "Data Source=\"" + dir + "\\\";"
    + "Extended Properties=\"text;HDR=No;FMT=Delimited\"";

  //create the database query
  string query = "SELECT * FROM " + file;

  //create a DataTable to hold the query results
  DataTable dTable = new DataTable();

  //create an OleDbDataAdapter to execute the query
  OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);

  try
  {
    //fill the DataTable
    dAdapter.Fill(dTable);
  }
  catch (InvalidOperationException /*e*/)
  { }

  dAdapter.Dispose();

  return dTable;
   }
 }
}