2010-06-28 8 views
0

제가 일하는 회사는 원본 데이터가 플랫 파일 또는 Excel 통합 문서로 시작되는 많은 시스템을 보유하고 있습니다. 이러한 파일은 DTS를 사용하여 SQL Server 데이터베이스로 가져옵니다.DTS/SSIS 가져 오기에서 제어 문자를 제거하는 방법은 무엇입니까?

이러한 파일에는 다양한 제어 문자가 포함되어있는 경우가 종종 있습니다 (예 : 일부 레코드에는 \0이 포함되어 있음을 알게 된 것 같습니다.) 우리의 데이터베이스에 들어가십시오.

저는 DTS/SSIS를 많이 사용하지는 않았지만 사용하고 있어야하는 것들이 이미 있거나 적어도 saniformation 모범 사례가 있어야한다고 생각했습니다.

많은 수입품에서 반복적 인 방식으로이를 수행하는 방법에 대한 아이디어는 인정 될 것입니다.

+0

DTS (SQL Server 2000) 또는 SSIS (SQL Server 2005/2008) 중 어느 것을 사용하고 있는지 명확히 설명해주십시오. –

+0

우리 둘 다 사용합니다. 우리의 레거시 패키지는 DTS에 있으며 새로운 것이 SSIS에 내장되어 있지만 모두에게 공통적 인 문제입니다. – starskythehutch

답변

1

나는 SSIS에 대한 경험으로 만 말할 수 있으므로 약간 유용하다면 사과드립니다.

일반 위생의 측면에서 볼 때, 저는이 직업을위한 목적 구축 구성 요소를 발견하지 못했습니다. 나는 다른 시나리오가 "나쁜 데이터"에 대해 다른 정의를 가질 수 있다고 생각하지만, 인쇄 할 수없는 문자를 제거하는 것과 같은 일은 일반적인 비즈니스 요구 사항 일 수 있으므로 다소 놀라운 일입니다.

당연히 파생 열 변환이나 더 복잡한 경우에는 스크립트 구성 요소로 언제든지 되돌아 갈 수 있지만 패키지간에 논리를 복제하는 일은 거의 없습니다. CozyRoc 구성 요소를 사용하여 패키지간에 공유 할 수있는 스크립트를 작성하는 경우가 있지만 처음부터 해당 구성 요소에 실제로 액세스해야하는 것 외에도 필요할 때마다 일정 수준의 설정이 필요합니다. 기능.

이런 경우, 개인적으로 최선의 선택은 일반적인 위생 과정을 Custom Data Flow Component으로 통합하는 것입니다. 우리는 매우 일반적인 데이터 검증 로직을 처리하고 구성 요소 편집기를 설정하여 확인란을 선택하여 주어진 열에 적용하려는 검사를 활성화 할 수 있도록했습니다. 그런 다음 끌어서 놓기의 문제가되어 데이터 흐름을 연결합니다. 적어도 우리에게는 구성 요소를 개발하는 데 시간을 할애 할 가치가있었습니다.

DTS가 제공하는 것에 대해서는 잘 모르겠다. (상당히 제한적이거나 최소한 우호적이지는 않겠지 만 틀릴 수도있다.) 따라서 레거시 패키지에는 유용하지 않을 가능성이있다. 이 경우 Cade의 솔루션은 입력 데이터에 적합하다고 가정 할 때 가장 스트레스가 없을 것 같습니다.

일반적인 SSIS 통찰력에 관한 한 Jamie Thomson의 blogs (이전 here)이 이전에이 주제에 관해 논의했는지 확인할 수 있습니다.

어쨌든이게 조금이라도 도움이 되었으면 좋겠어. 행운을 비네.

: 데이터를 데이터베이스에 보관하기 전에 데이터를 살균하려는 경우에 유용합니다.이 아닌 특정 공급 업체의 데이터를으로 가져 와서 데이터를 정리 한 다음 XML로 압축하여 웹 서비스를 통해 데이터를 보내려고합니다. 말할 필요도없이 XML 파서는 인쇄 할 수없는 문자를 너무 좋아하지 않습니다.

+0

답변 해 주셔서 감사합니다. DTS와 SSIS 중 하나에 대한 청구서를 제출하는 구성 요소를 찾을 수 없다는 점에서 혼자만의 것이 아니 었습니다. 이전에 사용자 지정 데이터 흐름 구성 요소를 개발하지는 않았지만 적어도 일부 지식을 습득하게되었습니다. 나는 당신의 대답에 투표했습니다. – starskythehutch

0

특정 문자를 항상 간단하게 대체/제거 할 수있는 경우 일반적으로이 사전 가져 오기를 사용자 정의 C 프로그램으로 처리합니다. 이것은 바이너리 파일이나 가변 길이 열 길이 표시기 열 또는 EBCDIC 등이있는 경우에는 분명히 작동하지 않지만 사용할 수있을 때 가져 오기 도구와 상관없이 적용 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 유감스럽게도 최종 사용자가 파일을 업로드하게하므로 추가 프로세스를 실행하는 것이 항상 가능하지는 않습니다. – starskythehutch

0

는 필요에 따라, 당신은 또한 할 수있는 다음과 같은 :

  1. 가져 오기 당신의 DB
  2. 에 '준비'테이블에 (SSIS/DTS를 통해) 데이터는 '살균'테이블을 가지고 스트립 (또는 다른 것으로 대체)하려는 문자열을 (행마다) 포함하는 DB. 이 테이블에는 다른 시나리오에 대한 추가 열이있을 수 있습니다.
  3. 커서를 사용하여 테이블을 단계별로 살균하고 위생 처리하십시오.
관련 문제