0 getting truncated in DT_WSTR to DT_STR conversion - ssis

I am new to SSIS and facing below issue.
Records are being exported from sql server table to flat text file in SSIS.
In table,the column "ABC" is nvarchar(32) not null and it has one of the value 016
In the SSIS mapping from table to Flat file is: DT_WSTR(32) to DT_STR(50)
After export, 016 is exported as 16 in text file.
Can you please suggest why the 0 gets truncated and how to fix it?

Check the datatypes in the Data Flow Path -> Metadata if you changed the source and or destination datatype.
SSIS doesn't always adjust the Data Flow Path Metadata when changing the source or destination datatypes.
Make sure the Data type is set to DT_STR instead of INT (INT will remove leading 0's)
The only way to fix this is to rebuild the Data Flow Path (as far as i know)
I recently had the same issue.

Related

SSIS is rounding off the decimal value when reading from the flat file

I have a flat file with the below value:
AI9983|01|20170802|119965.57|0.000000|0.000000|||
AI9983|01|20170803|119713.62|-0.210019|-0.210019|||
I read the file, the value 119965.57 gets stored as 119965.60
the value 119713.62 gets stored as 119713.60.
When reading the flat-file the variable is set as float[DT_R4]
It gets stored in the database as decimal(28,2).
Can someone help me to sort this out, I need to store the value as it is in the flat file into the database.
I am not using any derived column or transformation here.
Float will not return a reliable result, so it is challenging to use in database work.
In the flat file connection manager, go to the columns tab, select the column and change the data type to numeric with a DataPrecision of 28 and Scale of 6 (Based on the sample data provided in the question).

SSIS XML Source String DataType Length Error

I've a XML Source column "Comments" and data type is UniCode WSTR but in the source [UI] its capturing more than 4000 characters so SSIS ETL failed to load in destination table as the error shows "truncation of data length" & Destination column DataType is nVarchar(Max).
Please suggest me how to load the data into destination.
You could declare this column as an NTEXT. However, beware of two downsides of such step:
You have to check this definition every time you update XML datasource Yes, every time, because SSIS likes to reset string XML elements to its default - nvarchar(50).
Using NTEXT column has a negative performance impact, for details see https://stackoverflow.com/a/28507399

Convert ODBC DB2 source to Flat File error in SSIS

I have ODBC DB2 query to get data from database and data type of column only contain varchar(x), date, and int.
However, I'd like to keep them in flat file destination, but isn't able to use UTF-8 encoding. SSIS keeps informing error message below:
[Flat File Destination si_ce_f_hotel_capacity_snapshot_weekly [2]]
Error: Data conversion failed. The data conversion for column
"SOURCE_MARKET_CODE" returned status value 2 and status text "The
value could not be converted because of a potential loss of data.".
This column has varchar(2) datatype from source. And I specify this datatype in ssis flat file structure as DT_WSTR (2).
However, when I change file format to Unicode, everything works just fine.
How do I get this work in UTF-8 ??
Thanks a lot for your answer.
varchar -> DT_STR
Nvarchar -> DT_WST
You should specify the datatype in ssis flat file structure as DT_STR or use the ssis data conversion transformation tool
You need to do a data convertion in the middle of your data flow. This can be done by using a Derived Column or Data Convertion Data Flow Transformation.

SSIS 2012 extracting bool from .csv failing to insert to db "returned status 2"

Hi all quick question for you.
I have an SSIS2012 package that is reading a flat file (.csv) and is loading it into a SQL Server database table. However, I am getting an error for one of the columns when loading the OLEDB Destination:
[Flat File Source [32]] Error: Data conversion failed. The data conversion for column "Active_Flag" returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
I am wondering if this is because in the flat file (which is comma delimited), the values are literally spelled out "TRUE" or "FALSE". The advanced page on the flat file properties has it set to "DT_BOOL" which I thought was right. It was on DT_STRING originally, and that wasn't working either.
In the SQL server table the column is set up as a bit, and allows nulls. Is this because it is literally typed out TRUE/FALSE? What's the easiest way to fix this?
Thanks for any advice!
It actually turned out there was a blank space in front of "True"/"False" in the file. Was just bad data and I missed it. Fixing that solved my issue. Thank you though, I did try that and when that didn't work that's when I knew it was something else.

SSIS - Composite characters

I have a flat file and one of the column in the flat file has composite characters and In the Flat File connection manager I defined that particular column as
DataType - DT_WSTR
OutputColumnWidth - 40
The actual column length in text file is 30 but as this has composite keys I increased it to 40. Now I placed a Dataviewer after the Flat File Source to see how the data is passed and I see different values For example Société is passed as Société
Kindly help me to prevent this character conversion.
Please let me know if you need additional details. Thanks in advance
I changed the code page on the Flat File connection manager to UTF-8 and it solved the issue :).