2014-10-22 12 views
2

SSIS를 통해 SQL Server에 플랫 파일로드. SQL Server 대상 테이블에 DATE 데이터 형식이있는 몇 개의 열이 있습니다. SSIS의 연결 관리자에서 정의 할 해당 데이터 형식은 무엇입니까? 나는 연결 관리자에서 사용할 수있는 모든 DATE 데이터 유형을 시도했지만 그것은 다음과 같이 변환 오류가 발생합니다Flatfile 데이터 형식 SSIS에서 SQL Server 로의 문제

[OLE DB Destination [199]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Invalid character value for cast specification".

[OLE DB Destination [199]] Error: There was an error with OLE DB Destination.Inputs[OLE DB Destination Input].Columns[Created on] on OLE DB Destination.Inputs[OLE DB Destination Input]. The column status returned was: "The value could not be converted because of a potential loss of data.".

[OLE DB Destination [199]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC0209077 occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

플랫 파일 소스 날짜 형식은 DD-MM-YYYY 형식으로되어 있습니다. 에서 복사

+1

날짜 소리 데이터 형식을 선택하십시오. 플랫 파일 원본에서 고급 속성으로 이동하십시오. 각 날짜 열에 대해 FastParse 옵션을 true로 변경하십시오. 그것은 당신이 데이터를로드 할 수 있어야합니다. 데이터가 채워지지 않은 인스턴스 나 나쁜 날짜를 사용하는 인스턴스를 찾지 않는 * 경우. 해당 값으로 질문 업데이트 및/또는 ping 가능 – billinkc

+0

[FastParse] (http://stackoverflow.com/questions/8186291/import-string-date-in-derived-column/8197667#8197667) 참조 예 – billinkc

+0

@billinkc 그에 따라 설정을 변경했습니다. 데이터 흐름의 유효성은 검사되지만 SQL 대상 테이블의 날짜 열은 모든 행에 대해 null입니다. 데이터 흐름은 변환 실패시 열을 무시하고 Null 값을로드합니다. 플랫 파일 소스에 날짜 [DT_DATE]를 사용했으며 대상 테이블의 열은 [Date] – AllPigsREqual

답변

2

: 당신이 DD-MM-YYYY 형식을 가지고 있기 때문에 http://www.sqlservercentral.com/Forums/Topic609337-148-1.aspx

, 당신은 (DT_DATE), 나는 생각 YYYY-MM-DD에 플립 제대로 작동하려면 캐스팅해야합니다. 그에 따라 하위 문자열 매개 변수가 변경되었습니다.

파생 열 변환을 만들고 새 열을 만든 다음이 값을 식 필드에 넣습니다. 분명히 자신의 필드 이름을 사용하십시오. 단지 내가 그것을 변환 된 필드 알고 CONV_[field]

(DT_DATE)(SUBSTRING([field],7,4) + "-" + SUBSTRING([field],4,2) + "-" + SUBSTRING([field],1,2)) 

는 개인적으로 파생 열 이름을 지정하고 어떤 분야 나는 변환. 원하는 이름 지정 규칙을 사용하십시오.

대상 매핑에서 파생 열을 사용하십시오.

길게 대답.

소스가 [DT_STR] 데이터 유형으로 제공되는지 확인하십시오.

희망이 도움이됩니다.

+0

입니다. 이것이 완벽한 트릭입니다. 나는 많은 블로그를 살펴보고 문제를 해결하기 위해 많은 노력을했습니다. 도와 주셔서 감사합니다 :). – AllPigsREqual