2014-04-29 1 views
0

데이터를 .CSV에서 FLOAT 데이터 형식의 열로 가져 오는 데 문제가 있습니다. 나는 데이터 변환 작업을 사용하여도 직접 연결하고 시도했지만, (두 경우 모두) 그것은 변환 할 수 없다는 것을 말해 유지 :SSIS - 파생 열을 사용하여 부동 문자열 변환

Error: 0xC02020C5 at DC_Weekly_Cost_Target csv to FatzWklyCst_Target, Data Conversion [156]: Data conversion failed while converting column "Target" (22) to column "Copy of Target" (163). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.". 

내 연구가 파생 열 변환을 사용하여 저를 주도 편집자.

enter image description here

위 내가 데이터 형식 플로트로 문자열 (대상 및 폐기물) 변환을 시도하고있어 어떻게 : 내가 제대로 "표현"부분을 사용하는 방법을 통해서 나를 걸어 몇 웹 사이트를 발견했다. 편집기를 사용할 때 오류 메시지를받을 수없는 나는 패키지를 실행하려고 할 때 그러나, 나는 오류를 수신하고 (즉, 그것은 나 오류없이 OK CLIK하게됩니다) :

Error: 0xC0049064 at DC_Weekly_Cost_Target csv to FatzWklyCst_Target, Map Target in correct datatype 1 1 [222]: An error occurred while attempting to perform a type cast. 

Error: 0xC0209029 at DC_Weekly_Cost_Target csv to FatzWklyCst_Target, Map Target in correct datatype 1 1 [222]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "component "Map Target in correct datatype 1 1" (222)" failed because error code 0xC0049064 occurred, and the error row disposition on "output column "Target_Float" (227)" 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. 

Error: 0xC0047022 at DC_Weekly_Cost_Target csv to FatzWklyCst_Target, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Map Target in correct datatype 1 1" (222) failed with error code 0xC0209029 while processing input "Derived Column Input" (223). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure. 

이것은 내 Derived Column Transformation Editor를 사용하여 처음으로. 내가 잘못하고있는 것을 누군가가 볼 수 있습니까? 또는 .csv 파일에서 데이터 유형 float 열로 데이터를 가져 오는 가장 좋은 방법은 무엇입니까? 누구든지 저에게 줄 수있는 도움에 감사드립니다.

+0

목적지는 어디입니까? –

+0

@JeffOrris : 대상이 정신병자이므로 SSIS입니다. – siride

+0

OLE DB 대상 작업을 사용하여 레코드를 데이터베이스 테이블에 삽입하려고합니다. – Wendy

답변

2

합리적인 방법을 시도했지만 데이터의 일부가 불어났습니다. '잘못된'문자 일 수 있습니다. $ 또는

필자는 파생 열 변환을 스크립트 태스크로 바꿀 것입니다. 여기에서 .NET Framework를 활용할 수 있습니다. Try ... Catch, TryParse, Regex. 코드를 한 줄씩 디버깅하여 오류가있는 행을 검사 할 수 있습니다. Reflection을 사용하여 스크립트 코드로 전달 된 각 열에 대해 호출하는 함수로 전환 코드를 고려할 수도 있습니다.

PS : 목적지는 관련이 없습니다.

+0

스크립트 작업을 사용하지 않고도 달러 기호와 쉼표로 처리 할 수 ​​있습니다. 문자열 조작 함수가 있습니다. 달러 기호와 같은 것을 기대하는 DT_CY로 먼저 변환 한 다음이를 부동으로 변환 할 수도 있습니다. – siride

+0

데이터를 두 번 확인했는데 해당 필드의 숫자가 아닌 문자 만 마침표와 음수 기호로 나타납니다. 제 실수가 어디에 있는지를 결정하기 위해 무엇을 할 수 있는지에 대한 제안이 있습니까? 스크립트 작업이 어떻게 작동하는지 설명 할 수 있습니까? (모든 행을 들락날래 어떻게 통과합니까?) 도와 줘서 고마워! – Wendy

+0

필자는 테스트 CSV 파일에서 일부 데이터를 조롱하여 코드가 정상적으로 작동하는지 확인했습니다. 내 테스트 CSV 파일 (동일한 데이터 유형)을 사용할 때 모든 것이 작동하므로 파생 열 작업이 올바르게 코딩되었습니다. 그런 다음 원래의 CSV 파일로 이동하여 한 번에 하나씩 다시 열을 추가했습니다. 2 개의 float 열 중 첫 번째 열은 올바르게 파생되었지만 (파생 열 작업을 사용하지 않아도 됨) 두 번째 열은 올바르게 작동하지 않았습니다. 내가 보았고, 파일의 마지막 줄에,,,, 1 페이지 중 1 페이지가 나온다. 이제 그 프로그램을해야합니다. 당신의 도움을 주셔서 감사합니다!! – Wendy