SSIS는 엑셀 소스 문자열을 플로팅으로 강제 변경


9

Excel에는 텍스트로되어있는 열이 있지만 SSIS는 숫자 텍스트를보고 배정도 부동 소수점 [DT_R8]을 자동으로 만듭니다.

출력 분기의 외부 및 출력 열에서 수동으로 변경할 수 있지만 오류 출력은 단순히 각 열을 변경하지 못하게합니다.

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

패키지 xml을 수정하려고했습니다. 나는 노력 IMEX=1과를 typeguessrow=0하지만 아무도 내 문제를 해결하지 않았다. 이 문제가 전혀 있습니까? 엑셀이 데이터 유형을 추측하기 전에 기본 8 행보다 더 많이 읽도록 레지스트리를 수정하도록 제안하는 기사도 있습니다. 이 경로가 작동하더라도 패키지를 실행할 시스템의 레지스트리를 수정해야하기 때문에이 경로를 사용하고 싶지 않습니다.

SQL nvarchar 필드로 가져올 Excel 필드는 다음과 같습니다.

295.3
296.33

그러나 그들은 SQL 테이블에 다음과 같이 쓰여지고 있습니다.

295.30000000000001
296.32999999999998

데이터 뷰어를 넣고 필드가 표시됩니다

295.3
296.33

실행을 통한 모든 방법은 정확하지만 OLE DB 대상 소스에 도달하면 어떻게 든 변환됩니다.

295.30000000000001
296.32999999999998

그건 잘못이야

예를 들어 V321.1 및 V213.34와 같은 값도 정수가 아니며 varchar로 저장해야합니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Paul White 9

답변:


2

텍스트 파일처럼 가져올 수 있고이 문제가 발생하지 않는 .csv 파일로 파일을 가져올 수 있습니까? SSIS와 Excel은 여러 수준에서 잘 재생되지 않기 때문에 일반적으로 모든 Excel 파일을 취소하고 다른 형식을 요청합니다.


1
.csv 또는 txt 파일로의 변경이 조만간 진행 중입니다. 일이 훨씬 쉬워집니다.
Juan Velez

2

이 문제를 해결할 방법이없는 것 같습니다. Excel은 열에서 처음 몇 행의 데이터를보고 항상 데이터 유형을 FLOAT로 강제합니다. 첫 몇 행 (8+)에 몇 개의 varchar 문자가 포함 된 템플릿을 작성하는 솔루션이 제공되었으므로 EXCEL은이를 데이터 유형으로 선택하고 내 데이터를 가져옵니다. 소스 세이프를 사용하고 있으므로 Visual Studio에서 미리 정의 된 데이터 형식을 변경할 수 없도록 패키지 파일을 "읽기 전용"으로 만들 수 있도록 파일을 "체크인"할 수 있습니다.


1

1 단계 : IMEX=1; MAXROWSTOSCAN=0연결 문자열을 추가 합니다 (예 :) Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0".

2 단계 : 솔루션을 닫습니다. 텍스트 편집기에서 SSIS 패키지를 열고 사전 정의 된 데이터 유형으로 되돌아가는 열을 찾으십시오. XML 파일에서 원하는 형식으로 수동으로 업데이트하십시오.

3 단계 : SQL Server Data Tool에서 패키지를 열고 실행하면 파일에서 데이터를 그대로로드 할 수 있습니다.


죄송하지만 소스 데이터 유형이 패키지에 없습니다. 대상 열 유형 만 변환은 여전히 ​​Microsoft.Ace 드라이버 (또는 어떤 드라이버를 선택하든)에서 발생하고 SSIS 및 대상 테이블에 들어갈 때 이미 데이터 손실이 발생했기 때문에 목적을 다시 달성하지 못합니다.
리버스 엔지니어
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.