2014-06-20 9 views
0

플랫 파일에서 데이터베이스로 데이터를 간단하게로드하는 데 어려움을 겪고 있습니다. 문제는 해당 행 파일에 데이터로 포맷되지 않은 행 또는 불량 행이 있다는 것입니다.SSIS에서 텍스트 파일의 특정 행만 기록하십시오.

의 Sample.txt :

   Stackoverflow School at Philippines 

Record: 100101 
Date: 6/20/2014 

Name:    Age: About: 
-------------------- --- -------------------------- 
Coolai    19 Bad Row Question 
Qwerty    17 Java 
Qwerty    19 C# 
*User1    21 Dynamic Data 
User4    27 Assembly 

        Stackoverflow School at Nippon 

Record: 100102 
Date: 6/23/2014 

Name:    Age: About: 
-------------------- --- -------------------------- 
Sayuri    19 MSSQL 
Niwatori    21 Dynamic Data 
Jagaimo    27 Assembly 
*User7    21 Dynamic Data 
User9    27 Assembly 

나는 플랫 파일 연결에 고정 폭 형식을 사용하여 조건부 분할을 사용하여 문제를 접근하려고하지만,이 공백을 명중하면, 데이터를로드 중지하고 있습니다.

특정 행 수에 따라 데이터를로드 할 수 있습니까? 끝이 나는 텍스트 파일에서 원하는 유일한 때문에 :

Coolai    19 Bad Row Question 
Qwerty    17 Java 
Qwerty    19 C# 
User1    21 Dynamic Data 
User4    27 Assembly 
Sayuri    19 MSSQL 
Niwatori    21 Dynamic Data 
Jagaimo    27 Assembly 
User7    21 Dynamic Data 
User9    27 Assembly 

의 Sample.txt는 LINK 파일.

+0

헤더 행 구분 기호는 무엇으로부터 추출 된 데이터를 사용할 수 있습니까? 고정 너비에 대해 정의한 폭은 얼마입니까? – Raj

+0

@Raj 헤더 행 구분 기호는 {CR} {LF}이고 행 너비는 51입니다. – Coolai

+0

원본 텍스트 파일을 여기에 첨부 할 수 있습니까? 너비가 51 인 열로 끊어진 문자열이 있습니다. – Raj

답변

1

원본 텍스트 파일이 구분 된 형식 표준을 따르지 않으므로 스크립트 작업을 사용하고 모든 공백과 잘못된 데이터를 처리하는 사용자 지정 스크립트를 작성해야합니다. 텍스트 파일을 구분 된 형식으로 변환 한 다음 필요에 따라 처리 할 수 ​​있습니다.

스크립트 작업의 논리는 파일을 한 줄씩 읽으며, 실행이 불량 행/데이터에 도달하면 건너 뛸 논리를 입력합니다. 이렇게하면 표준 구분 형식으로 표시됩니다. 스크립트 코드 아래

시도, 당신은 List<string> goodData

 string line; 
     bool isNextLineGoodData = false; 
     List<string> goodData = new List<string>(); 
     // Read the file and display it line by line. 
     System.IO.StreamReader file = new System.IO.StreamReader("c:\\csv.txt"); 
     while ((line = file.ReadLine()) != null) 
     { 

      if (isNextLineGoodData) 
      { 
       if (line=="") 
       { 
        isNextLineGoodData = false; 
       } 
       else 
       { 
        goodData.Add(line); 
       } 

      } 
      if (line=="") 
      { 
       isNextLineGoodData = false; 
      } 
      if (line.StartsWith("---")) 
      { 
       isNextLineGoodData = true; 

      } 
     } 

     file.Close(); 
+0

답변 해 주셔서 감사합니다. – Coolai