2016-10-06 3 views
0

누구나 나를 올바른 방향으로 안내 할 수 있습니까? 나는 횡설수설처럼 보이는 여러 줄의 큰 텍스트 파일을받습니다. 예를 들어, 여기에 라인 중 하나입니다사례 공백 복수 조건

DETDD20160100388530007400000015768652700000000074433902  00000162667905028000000200020160229011750490157  1606056379591109995050     435601530A   H19618010000000000{0000013962{0000013962{000000201601D142 

이제 내 일이의 의미가 결국 엑셀 스프레드 시트에 넣어하는 저장 프로 시저를 호출하는 SSIS 패키지를 사용하는 것입니다. 이 긴 줄은 5 글자로 시작하여 최종 출력을 결정합니다. 각 문자의 데이터를 구성하는 문자를 알려주는 지침이 있지만 코드에 대한 도움이 필요합니다. 여기 내가 지금까지 얻은 것이 있습니다.

Select * 
insert into [dbo].[ContractDisputeResolution] 
Case WHEN SUBSTRING(col001, 1,5) = 'DETDD' 
    THEN (SUBSTRING(col001, 6,6) as Current_Reporting_Period, 
      SUBSTRING(col001, 12,7) as Sequence_Number, 
      SUBSTRING(col001, 19,8) as DDPS_System_Date, 
      SUBSTRING(col001, 27,32) as DDPS_System_Time, 
      SUBSTRING(col001, 33,37) as File_ID_, 
      SUBSTRING(col001, 38,42) as Sub_Contract_No, 
      SUBSTRING(col001, 43-250) as Filler) 
END 
FROM [dbo].[ContractDisputeResolutionSTAGING] 

---------------------------------------------------------- 

Select * 
insert into [dbo].[ContractDisputeResolution] 
Case WHEN SUBSTRING(col001, 1,5) = 'TAMPT' 
(insert more rules here) 

모든 종류의 구문 오류가 발생하며 Case 문을 사용해야 할지도 모릅니다. 누구든지 나를 좀 더 잘 설정하거나 올바른 방향으로 나를 가리킬 수 있습니까?

Select * 
insert into [dbo].[ContractDisputeResolution] 

는 단순히 Select *을 제거 :

감사합니다, 그렉

+0

SSIS 정렬이란 SQL Server를 의미하며 구문에서이를 확인합니다. –

답변

2

이 유효한 SQL하지 않습니다. insert의 열을 나열하는 것이 좋습니다.

그리고 case도 모두 잘못되었습니다. 내 생각에 :

insert into [dbo].[ContractDisputeResolution](Current_Reporting_Period, Sequence_Number, DDPS_System_Date, DDPS_System_Time, DDPS_System_Time, Sub_Contract_No, Filler) 
    select SUBSTRING(col001, 6, 6) as Current_Reporting_Period, 
      SUBSTRING(col001, 12, 7) as Sequence_Number, 
      SUBSTRING(col001, 19, 8) as DDPS_System_Date, 
      SUBSTRING(col001, 27, 32) as DDPS_System_Time, 
      SUBSTRING(col001, 33, 37) as DDPS_System_Time, 
      SUBSTRING(col001, 38, 42) as Sub_Contract_No, 
      SUBSTRING(col001, 43, 250) as Filler 
    FROM [dbo].[ContractDisputeResolutionSTAGING] 
    WHERE SUBSTRING(col001, 1, 5) = 'DETDD'; 

열 별칭을 기반으로 실제 테이블에있는 열 이름을 추측하고 있습니다.