2010-03-31 63 views
1

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

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

回答

3

这是使用LINQ的强大功能的好例子。 Here's a quick reference举例说明了如何做到这一点。

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

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

+0

非常感谢!我会立即查看该链接! – Kevin 2010-03-31 02:44:36

+0

这不会处理“真正的”CSV文件,如Excel的输出或Access输出等,因为它不处理带引号的字符串等。 – 2010-03-31 02:45:10

+0

你说得对。但你可以一起使用它们。 – 2010-03-31 02:50:31

1

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

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

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

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

+0

Awww!我希望有一种方法可以制作.csv文件的“框架”或“模式”,以便我可以忽略标题信息。嗯。不过,我想我可以去除标题信息并将数据写入“temp”.csv文件。 – Kevin 2010-03-31 02:45:57

+0

感谢您的链接,里德!我很感激。 – Kevin 2010-03-31 02:50:31

1

手动解析它非常简单,您可以使用解析它的程序,去掉前两个不必要的行,然后直接将其提供给SSIS。

下面是使用LINQ在阅读它的链接:通过使用C#,以解析CVS文件内置的OLEDB CSV分析器 http://blogs.msdn.com/wriju/archive/2009/05/24/linq-to-csv-getting-data-the-way-you-want.aspx

+0

谢谢!目前为止,该链接似乎非常受欢迎!是的,关于剥离两个标题行的好主意。在阅读了你和Aaron建议的网站后,我想我可以处理这个问题。谢谢! – Kevin 2010-03-31 02:48:17

1

。 你可以找到一个样本here

它基本上可以让你像对待数据库表一样对待csv文件。

+0

谢谢,开发!我会检查你链接的样本。 – Kevin 2010-03-31 02:53:45

相关问题