2012-06-14 22 views
1

我正在使用c#進行Windows應用程序開發。我想從一個目錄中讀取一個csv文件並導入到sql server數據庫表中。如果文件內容是統一的,我已成功讀取並將csv文件數據導入到數據庫表中。但我無法插入與恆定形式的文件數據ex.Actually我的csv文件分隔符是標籤(「\ t」),並得到各個字段後,我有一個包含像DCC如何使用C#讀取不變的csv文件#

Name 
---- 
xxx 
xxx yyy 
xx yy zz 

和我的數據的字段像xxx,yyy和xx,yy,zz等令人不安的數據,因此插入成爲問題。 我怎樣才能將數據統一插入到數據庫表中。

+0

我是否正確理解您的解析器正在讀取'xxx'和'yyy'之間的空格作爲分隔符,所以它試圖將它放在下一個字段中?這個空間實際上是一個標籤嗎? – StriplingWarrior

+0

是的,先生。這就是爲什麼它將單個領域分割成多個部分。 –

回答

0

如果CSV(或TSV)值在其中包含分隔符,則應該用引號括起來。有關更多詳細信息,請參閱規範:http://tools.ietf.org/html/rfc4180#page-3

因此,您的輸入文件格式不正確。如果您可以說服輸入提供商解決此問題,那將是解決問題的最佳方法。如果沒有,其他的解決方案可能包括:

  • 可視化檢測和編輯文件,修正錯誤,或
  • 編寫解析器程序擁有的數據的預期足夠的知識,它可以正確地「猜」裏的真實分隔符是。
0

如果我正確理解你,問題在於你的代碼在空格上而不是在標籤上分開。鑑於你在從文件中讀取行,所有你需要做的是:

string[] fileLines;//from the file 
foreach(string line in fileLines) 
{ 
    string[] lineParts=line.Split(new char[]{'\t'}); 
} 

,然後做你想做的每lineParts\t是製表符。

如果您也在詢問如何將行寫入數據庫文件...您可以使用製表符分隔的文件(Import Export Wizard)來讀取(假設您使用的是Sql Server Mgmt Studio,但我確定存在是使用其他數據庫管理軟件進行導入的可比較方法)。