2010-03-31 15 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

相關問題