3
votes

I am trying to export the contents of a SQL Server 2005 table to a csv file using SSIS. In the Data Flow Task I have a OLE DB Source for the table and a Flat File Destination for the file.

When copying the data I started getting a failure on one of the column on a certain row and following some investigation found the problem was with comma's in the data below

Data Issue (nvarchar255)

errors code l075 showing,,,re test.

OLE DB Source for Comment col

enter image description here

Derived Column

Given that this was the issue I created a Derived Column object between the source and destination and destination objects and tried filtering out the comma's using a replace REPLACE(Comment,","," ") but the same column is still failing with the below errors.

enter image description here

enter image description here

enter image description here

enter image description here

Destination Component

enter image description here

Exception

enter image description here

[Inspection Failures Destination [206]] Error: Data conversion failed. The data conversion for column "Comment" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".

[Inspection Failures Destination [206]] Error: Cannot copy or convert flat file data for column "Comment".

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.
The ProcessInput method on component "Inspection Failures
Destination" (206) failed with error code 0xC02020A0 while processing input "Flat File Destination Input" (207). 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.

[Inspecton Failures Source [128]] Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.
The PrimeOutput method on component "Inspecton Failures Source" (128) returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.
There may be error messages posted before this with more information about the failure.

2
Usually this error is when column: data type and lenght don't match in two elements: derived column and source element. Try this(without space): REPLACE(Comment,",","") or this SUBSTRING(REPLACE(Comment,",",""),1,255)Justin
I tried both and its still failing on the same row and columnPhil Murray
Oh this about destination error?? So where you are writing the column element is to short or data type dont match. Yeah they both are red, because Destination can't write and source don't now what to do... Show Destination advanced Input Columns the column where you writing commentJustin
Just uploaded destination image. As far as I can see the datatype (DT_WSTR) and Length (255) are correctPhil Murray
Yes you right. Hm could be error because of memory or you inserting strings with commas in text file delimeted by commas....Justin

2 Answers

2
votes

Ok, the problem actually appears to be a hidden illegal character in the text

In the image below the top line shows a square before the re test string. The comment column in the database is an nvarchar which apparently uses a different character set so I can not just use the CHAR(13) + CHAR(10) to replace the carriage return.

The fix involved converting the field from an nvarchar to a varchar then performing a replace on the converter ? character resulting in the corrected second ling in the image

SELECT ID,
        REPLACE(REPLACE(CAST(Comment AS varchar(255)),'?',' '),',',' ') Comment
FROM tblInspectionFailures  WHERE (ID = 216899)

enter image description here

The conversion requirement is detailed here

This does not should like an ideal solution to me but it does work. Does anyone have any other options.

0
votes

Without replacing comment column can you create another column and map the new derived column to destination column and see.