我是C#和Visual Studio的新手。我正在编写一个小程序,它将读取.csv文件,然后将读取的记录写入SQL Server数据库表。 我可以手动解析.csv文件,但我想知道是否可以以某种方式将.csv文件“描述”到Visual Studio,以便我可以将其用作数据源?我应该提到.csv文件中的前两行包含标题信息,下面的行是实际的逗号分隔数据。可以将.csv文件用作Visual Studio 2008中的数据源吗?
另外,我应该提到,这个程序是一个独立的控制台程序,没有用户界面。
我是C#和Visual Studio的新手。我正在编写一个小程序,它将读取.csv文件,然后将读取的记录写入SQL Server数据库表。 我可以手动解析.csv文件,但我想知道是否可以以某种方式将.csv文件“描述”到Visual Studio,以便我可以将其用作数据源?我应该提到.csv文件中的前两行包含标题信息,下面的行是实际的逗号分隔数据。可以将.csv文件用作Visual Studio 2008中的数据源吗?
另外,我应该提到,这个程序是一个独立的控制台程序,没有用户界面。
这是使用LINQ的强大功能的好例子。 Here's a quick reference举例说明了如何做到这一点。
跑下来就是这样。您可以将CSV读入字符串数组,然后使用LINQ来查询该集合。正如里德所指出的那样,你必须围绕你的标题行编码,因为它会抛出你的查询。
您也可以使用TextFieldParser来处理转义逗号。 Here's一个使用TextFieldParser解析文件的thinqlinq示例,以及一个LINQ查询来获取结果。它甚至有一个单元测试,以确保处理逃脱的逗号。
如果您有2行标题,它不是标准的CSV文件。
在这种情况下,自动工具将不起作用,您将不得不恢复为手动解析文件。
如果要删除其中一个标题行,则可以使用this technique of parsing CSV files into an ADO.NET DataTable。
但是,如果不是,则Microsoft.VisualBasic.dll程序集中的TextFieldParser(可从C#使用)使解析CSV文件变得非常简单。
手动解析它非常简单,您可以使用解析它的程序,去掉前两个不必要的行,然后直接将其提供给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
谢谢!目前为止,该链接似乎非常受欢迎!是的,关于剥离两个标题行的好主意。在阅读了你和Aaron建议的网站后,我想我可以处理这个问题。谢谢! – Kevin 2010-03-31 02:48:17
非常感谢!我会立即查看该链接! – Kevin 2010-03-31 02:44:36
这不会处理“真正的”CSV文件,如Excel的输出或Access输出等,因为它不处理带引号的字符串等。 – 2010-03-31 02:45:10
你说得对。但你可以一起使用它们。 – 2010-03-31 02:50:31