문제

Excel 2003의 스프레드 시트에서 SSIS를 사용하여 SQL Server 2005로 날짜 열을 가져 오려고합니다. 저는 영국에 있으므로 DD/MM/YYYY로 형식으로 날짜를 원합니다.

불행히도, 스프레드 시트의 열에는 DD/MM/YYYY (Excel 'General'형식 포함)의 문자열로 저장된 날짜와 DD/MM/YYYY (Locale 'English 포함 영국) ').

이것은 바로 그 방식이며 사용자가 이것을 스스로 분류 할 수있을 것으로 기대할 수 없습니다.

스프레드 시트를 볼 때 모든 날짜가 시각적으로 올바른 것으로 보입니다. IE dd/mm/yyyy.

데이터베이스의 홀딩 테이블에서 값을 Varchar 열로 가져 오려고합니다. 그런 다음이 값을 DateTime 열이 포함 된 적절한 테이블에 복사하는 저장된 절차를 실행합니다.

문제는 스프레드 시트 및 사용 날짜 서식에 저장된 날짜가 MM/DD/YYYY로 SQL Server로 가져오고 문자열로 저장된 날짜는 DD/MM/YYYY로 가져 오는 것입니다. 연결 문자열에 imex = 1이 있습니다.

동일한 varchar 열에서 두 형식을 사용하는 날짜는 분명히 DateTime 열에 넣으려고 할 때 문제가 발생하므로

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

쓸모가 없습니다.

SSIS 패키지가 Excel 스프레드 시트의 겉보기에 올바른 날짜를 SQL Server로 MM/DD/YYYY로 가져 오는 이유를 아는 사람이 있습니까?

어쨌든 SSIS 패키지가 날짜를 DD/MM/YYYY로 가져 오도록 강제로 날짜 형식이 적용된 문자열과 셀로이 날짜를 조합 할 것입니까?

다른 아이디어가 있습니까?!

많은 감사,

앤서니

도움이 되었습니까?

해결책

나는 당신이 당신의 질문에 대답했다고 생각합니다. 날짜 형식의 포맷 된 셀의 가져 오기는 날짜로, 다른 사람은 문자열로 취급됩니다. 아마도 SQL Server 날짜 설정은 mm/dd/yyyy이므로 변환입니다.

SSIS 패키지에 데이터 변환 단계를 추가하고 열의 모든 것을 단일 형식 인 DateTime 또는 String으로 변환 해보십시오. 그런 다음 SQL Server가 모두 같은 방식으로 처리 할 것이라고 확신합니다.

주권

다른 팁

저를 위해 일한 것은 추가하는 것이 었습니다 IMEX=1 Excel 연결 문자열에.

그래서 그것은 다음과 같이 보일 것입니다.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top