2016-07-20 8 views
1

각 레코드 길이가 다른 텍스트 파일이 있습니다. 얼마나 많은 열이 거기에 있고 열 구분 기호가 마음에 들지 않습니다. 난 그저 SSIS 가능성이 고정 열 너비 단일 파일을 사용하여 길이를 동일하게하고 싶습니다. 다른 캐릭터와 비교하여 캐릭터 강도가 낮은 레코드에 공간을 추가하고 싶습니다. 나는 파일에서 최대 길이가 무엇인지 모릅니다.SSIS를 사용하여 텍스트 파일에서 동일한 길이의 각 레코드를 만드는 방법은 무엇입니까?

나에게 약간의 지식을 공유하십시오.

고마워요!

+0

내 첫 번째 생각은하지 마세요. 다음에 뭘 생각 했니? 연결 관리자가 분리 문자를 무시하고 1 개의 필드로 모두 가져 오기를 원한다면 구분자를 존재하지 않는 조합 (아마도 파이프 |)으로 설정하십시오. 또는 구분 된 파일을 고정 폭 파일로 변경 한 다음 데이터 흐름을 사용하고 길이에 따라 셀을 채우는 계산 된 열을 추가하려고합니다. – Matt

답변

0

구조 작업 스크립트.

  1. 드래그 스크립트 작업 변환 및 입력 플랫 파일의 파일 경로를 통과 - 당신의 플랫 파일을 가정하면 파일의 각 행이 쉼표, 이동하는 방법에 대한 것 말에 의해 분리되어, 즉 줄에 균일 한 구분 기호를 가지고
  2. 파일을 한 줄씩 읽습니다.
  3. 루프를 사용하여 구분 기호 (개수를 가져 오는 Split 함수를 사용할 수 있음)를 키로 가져오고 전체 행을 값으로 가져옵니다. 이 결과 세트를 사전 오브젝트에 저장하십시오.
  4. Dictionary.Keys.Max() 함수를 사용하여 사전에서 키의 최대 값을 가져옵니다. (기본적으로 줄당 구분 기호가 가장 많이 발생 함) MaxCount라는 변수에 저장합니다.
  5. 이제 각 키/값 쌍을 반복하십시오. KeyValue가 MaxValue보다 작은 각 줄에 빈 빈 분리 문자를 추가합니다. 예를 들어 줄당 최대 구분 기호가 5이고 줄에 2 만있는 경우 각 순환에 대해 추가로 3 개의 빈 구분 기호 즉 ',,, '.
  6. StreamWriter를 사용하면 사전의 모든 값을 새 파일로 가져올 수 있습니다.

이렇게하려면 System.IO 및 System.LINQ 클래스를 사용해야합니다. SSIS 2008에서 사용할 때는 프로젝트 프레임 워크가 3.5로 설정되어 있는지 확인하십시오.

새 파일의 길이는 일정합니다.