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

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

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

这是使用LINQfunction的一个很好的例子。 这是一个快速参考 ,并举例说明了如何做到这一点。

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

您也可以使用TextFieldParser来处理转义逗号。 这是一个关于thinqlinq的示例,它使用TextFieldParser来解析文件,以及一个LINQ查询来获取结果。 它甚至还有一个unit testing,以确保处理转义的逗号。

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

在这种情况下,自动工具将无法工作,您必须还原为手动解析文件。

如果要删除其中一个标题行,您可以使用这种将CSV文件解析为ADO.NET DataTable的技术 。

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

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

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

通过C#使用内置OLEDB CSV解析器来解析CVS文件。 你可以在这里找到一个样本

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

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

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; } } }