2016-10-06 5 views
0

Может ли кто-нибудь вести меня в правильном направлении здесь. Я получаю большой текстовый файл с несколькими строками, похожими на тарабарщину. Например, вот одна из линий:Case Blank Несколько условий

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

Теперь моя работа состоит в том, чтобы использовать пакет SSIS, который вызывает хранимую процедуру, чтобы иметь смысл этого и в конечном итоге положить его в электронную таблицу Excel. Эти длинные строки символов начинаются с 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) 

Я получаю все виды ошибок синтаксиса и не знаю, должен ли я быть даже при использовании саза. Может ли кто-нибудь помочь мне настроить это немного лучше или указать мне в правильном направлении?

Спасибо, Грег

+0

Стили SSIS подразумевают, что SQL Server и синтаксис подтверждают это. –

ответ

2

Это не является допустимым SQL:

Select * 
insert into [dbo].[ContractDisputeResolution] 

Просто удалите Select *. Я бы рекомендовал вам перечислить столбцы для 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'; 

Я предполагаю, что имена столбцов в реальной таблице, на основе псевдонимов столбцов.

Смежные вопросы