2013-01-11 4 views
0

탭으로 구분 된 텍스트 파일로 DataTable을 채 웁니다. 나는 데이터 테이블에 텍스트 파일을 가져 OleDBConnection를 사용하는 경우C#에서 탭으로 구분 된 텍스트 파일로 Datatable을 채우는 방법?

Name Id Place 
Sam 2001 USA 
Raja 3455 India 
Allan 90101 Canada 

을 따를 때 텍스트 파일에 데이터가, 나 데이터 테이블에서 데이터를 얻고 다음과 같이

Name_Id_Place 
Sam2001USA 
Raja3455India 
Allan90101Canada 

실제 텍스트 파일이 3 열을 가지고 있으며, 3 행,하지만 datatable에서 나는 하나의 열로 모든 3 열을 가지고 Name_Id_Place.

누구든지이 문제의 해결 방법을 말해 줄 수 있습니까? 여기

+1

일부 샘플 코드를 게시 할 수 있습니까? –

답변

3
static void Main() 
    { 
     //create a data table and add the column's 
     DataTable table = new DataTable("table_name"); 
     table.Columns.Add("name", typeof (String)); 
     table.Columns.Add("id", typeof (Int32)); 
     table.Columns.Add("place", typeof (String)); 

     //start reading the textfile 
     StreamReader reader = new StreamReader("file_to_read"); 
     string line; 
     while ((line = reader.ReadLine()) != null) 
     { 
      string[] items = line.Split('\t'); 
      //make sure it has 3 items 
      if (items.Length == 3) 
      { 
       DataRow row = table.NewRow(); 
       row["name"] = items[0]; 
       row["id"] = Int32.Parse(items[1]); 
       row["place"] = items[2]; 
       table.Rows.Add(row); 
      } 
     } 
     reader.Close(); 
     reader.Dispose(); 

     // make use of the table 


     // when use is done dispose it 
     table.Dispose(); 
    } 
+0

텍스트 파일에 1000 개의 행이있는 경우 수행 할 수있는 작업은 무엇입니까? –

+0

@VinothSrinivasan - 수천 명이 괜찮을 것 같아요, 만약 그것이 교차하면, 50K 또는 뭐라 말할 수 있습니다! –

0

난 당신이 올바른 방법으로 텍스트 파일, 당신의 사용 제공자 왜 내가 가진

한 열에 모든 행을 읽어, 열의 어디 말을 이해할 수없는 것을 볼 유일한 문제에서 데이터를 읽고 생각 OleDBConnection을 사용하여 텍스트 파일에서 데이터를 읽으려고 할 때 똑같은 결과가 나타납니다. 제공자로 내를 ConnectionString에서

내가 사용 :

Provider=Microsoft.Jet.OLEDB.4.0; 

당신이 동일한 다음 Windows 레지스트리에서이 공급자에 대한 유일한 변경 "형식"옵션을 필요로 사용한 경우 :

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text 

그런 다음 수정 "형식 "키 값 ="TabDelimited "

또는 다른 구분 기호 문자 (예 :"; ")를 사용하려는 경우 다음 Format ="구분 (;) "

+0

감사합니다.하지만 레지스트리에서 Microsoft의 Jet 옵션을 찾을 수 없습니다. 게다가 DataTable을 통해 SQL 테이블에 큰 데이터를로드하려고합니다. 그래서 처음에는 1000s의 행을 포함하는 탭으로 구분 된 텍스트 파일에서 DataTable을로드합니다. 어떻게 그 일을하도록 도와 주시겠습니까? –

+0

OLEDB 연결 문자열을 @ "Provider = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = | DataDirectory |; 확장 속성 = '텍스트; HDR = 예; FMT = 구분 기호' '" –

+0

갖고 계신 시스템, 64 비트 또는 32 비트 시스템? – Fabio

관련 문제