2012-11-29 4 views
3

저는 SSIS에 익숙하지 않아 OLE DB 원본 단계에서 SQL 문을 사용하여 데이터를 가져오고이 데이터에 5 개의 DATETIME 필드가 포함되어있는 문제가 발생합니다. 변환해야하며 모든 데이터가 플랫 파일로 들어갑니다.SSIS 날짜 문자열 변환 오류

나는과 같이 SQL의 변환을하고 있어요 :

REPLACE(CONVERT(VARCHAR(10), birthdate, 101), '/', '') AS 'Date of Birth (MMDDYYYY)

내 데이터 형식은 문자열 [DT_STR]는 SSIS 플랫 파일 연결 관리자에서

내 OutputColumnWidth이없이 SSIS에서 일하고 8입니다 위의 변환으로 잘라내기를 사용하면 8 자의 varchar가 만들어집니다. varchar (8)로 변환하려고하면 SQL Server 관리 스튜디오에서 데이터가 잘립니다.

제 다음 변환 시도가 실패했습니다.

REPLACE(CONVERT(VARCHAR(10), exp_date, 103), '/', '') AS 'Expiration Date 

나는 다음과 같은 오류가 발생합니다 : 다음은 SQL 코드의 "값 때문에 데이터의 손실 가능성으로 변환 할 수 없습니다"모든 것이 동일한 설정으로 재현 된 경우에도. 이 변환은 날짜를 'DDMMYYYY'형식으로 변환합니다.

저는 이것이 데이터 변환 오류라는 것을 알고 있지만 올바르게 작동하는 첫 번째 변환을 통해이를 해결하는 방법을 알지 못합니다.

재미있는 점은 오류가있는 행을 다른 플랫 파일로 리디렉션하면 날짜가 가져오고 아무런 문제없이 변환된다는 것입니다.

나는 여기를 잃고 그룹의 도움을 주시면 감사하겠습니다.

+0

첫 번째 메시지에는 '101'MM/DD/YYYY 형식이 사용되고 두 번째 메시지에는 '103'DD/MM/YYYY 형식이 사용되는 이유는 무엇입니까? (문제가 발생하지 않아야합니다!) –

+0

플랫 파일이 전송되는 부서에서 요청하는 내용입니다. Power Builder에서 수년간 실행 한 자동화 된 보고서를 SSIS로 변환하는 과정에 있는데이 형식이 원래 형식이었습니다. – kdejarnet

+0

exp_date 어떤 데이터 형식 – Justin

답변

1

왜 작동하지 않는지 알았습니다. 처음 패키지를 만들었을 때 생년월일이 바뀌 었습니다. 그 이유는 다른 날짜 형식 때문이었습니다. 내가 그것을 실행하고 모든 데이터가 끌어 당겨 졌다는 것을 확인한 후에 다른 4 가지 날짜도 변환해야한다는 것을 깨달았습니다. 문제는 SQL에서 변경 한 내용과 플랫 파일 연결 관리자에서 메타 데이터가 여전히 해당 4 개의 필드에 대한 원래 설정으로 설정되었다는 것입니다. 나는 단계를 재창조했고 모든 것이 올바르게 바뀌었다. 응답 시간을내어 주셔서 감사합니다

+1

위의 1864416 사용자가 게시 한 답변으로 커뮤니티에 도움을줍니다.커뮤니티 위키로 표시되어 elses 응답자의 도움을받지 못합니다. –