SSIS loading data error - sql-server

I have a CSV file which contains this data:
EmployeeCode,EmployeeName,EmployeeSalary,Date
101,raju,1000,2/2/2003
102,krish,100,3/4/2005
103,rishbh,320,12/9/2007
104,rani,4690,12/8/2008
105,olesia,2000,17/4/2009
106,olga,2000,12/6/2010
107,mellisa,3330,12/4/2011
And I have table called employees:
EmployeeCode nvarchar(50)
EmployeeName nvarchar(50)
EmployeeSalary money
Date datetime
When I try to load this CSV file into my table using the SSIS package it gives me an error
1) [ADO NET Destination [2]] Error: An exception has occurred during
data insertion, the message returned from the provider is: The given
value of type String from the data source cannot be converted to type
date of the specified target column.
2) [SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.
The ProcessInput method on component "ADO NET Destination" (2) failed
with error code 0xC020844B while processing input "ADO NET Destination
Input" (9). 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.
However If I remove date column from the CSV and try to insert everything works well. What is wrong with date column, why is it not taking the values?

Use OLE DB Destination rather than ADO NET Destination
This issue is due to default datatype of flat file is picked "string [DT_STR] " which is equal to varchar in database , but you have made your destination table data type nvarchar is equal to Unicode string [DT_WSTR] .
Either using derived column Change data type string [DT_STR] to Unicode string [DT_WSTR]
or
Go to show advance editor (source ) >> Input and output Properties output columns >> DAta type Property >> change data type to Unicode string [DT_WSTR] for EmployeeCode and EmployeeName.

First of all you should use OLE DB destination instead of ADO.Net Destination if your table is huge and now come to issue ,in your table data type of date is as 'datetime' so either you have to change your input data to date time by using Right click on component and go to advance editor.
Otherwise you can data conversion between source and destination and convert date as "DB_Datetime".I hope you will not face any issue when you do accordingly.

I had the same issue and my answer is going to sound silly. I struggled with it for 2 days and ended up realizing that the date format was wrong in my CSV file.
for example:
105,olesia,2000,17/4/2009 -- this is invalid because it ends up taking 17 as a month and
its invalid
blew my mind when I realized it! Hope this helps anyone else going forward!

Related

SSIS Data Conversion Error despite using Data Conversion and accurate destination Datatype

I'm getting the following error when I run my package:
[Data Conversion [2]] Error: Data conversion failed while converting column "FieldName" (373) to column "Copy of FieldName" (110).
The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
However, I don't understand why. I have double checked the inputs and outputs to validate that they make sense and are what I expect. I've also checked all the raw data in the column in my excel file.
My package setup:
Excel Datasource feeding Data Conversion then Derived Column and finally output to Ole DB Destination (sql)
What I've done:
I opened the advanced editor on the data conversion. I confirmed that the incoming data type is DT_STR which can be expected since the source datatype wasn't correctly identified. It is actually a date in my excel file. I confirmed that the data conversion output column is database timestamp [DT_DBTIMESTAMP] as I have set it to be. My destination table has a DateTime datatype for FieldName.
What am I missing?
I think this is a date format issue, check that column does not contains empty strings or NULL values.
Also check that values are similar to yyyy-MM-dd HH:mm:ss date format.
To read more about SSIS data types check the following article:
Integration Services Data Types
Also when converting string values to datetime, if values are well formated, just map the source column to the destination without Data conversion Transformation and they will be implicitly converted

SSIS Package error- SSIS Error Code DTS_E_PROCESSINPUTFAILED

SSIS job has failed and posting the below error
[Product Sales [749]] Error: An exception has occurred during data insertion, the message returned from the provider is: The given value of type String from the data source cannot be converted to type float of the specified target column.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Product Sales" (749) failed with error code 0xC020844B while processing input "ADO NET Destination Input" (752). 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.
Can some one please advise if you have come across this kind of error
Thank you
Your error message is explaining the issue to you: "The given value of type String from the data source cannot be converted to type float of the specified target column."
Open the component that is failing and review the metadata. You have a float column somewhere and you are passing this column a string that can't be converted to a float, such as empty space or an alphanumeric value.
If you want to ensure these values are floats, you can add a script component above the one that is failing and write some code to ensure the value is properly sanitized:
string input = "1.1"; //Replace with your input buffer value
float result;
float.TryParse(input, out result); //Result = 0.0 if value was not parsed
Please add a data conversion task between source and destination to change data type from string to float , it will resolve your issue .
If still you are facing the issue then let me know the exact issue what are the source and which ssis task you are using.
Use ole db source and destination instead of odc and try to reduce the column name length and no paranthesis in column names and use table and fast load this should solve. I had the same problem where loading from analysis services cube through dax query into SQL Table of my local machine

SSIS how to convert object to varBinary for SQL

I have a csv file from csvde which has the objectGUID and some other information from AD.
I want to use SSIS to copy this info into the following table in SQL
[DN] [varchar](255) NULL,
[ObjectGuid] [varbinary](50) NULL,
[pwdExpiry] [bigint] NULL
Sample csv file from csvde file looks like this:
DN,objectGUID,msDS-UserPasswordExpiryTimeComputed
"CN=DEFRAVMDROOTCA1,OU=Test,DC=company,DC=net",X'c7eb536bc818f842bde11d8152755e7e',9223372036854775807
"CN=Sajeed Temp,OU=Test,DC=company,DC=net",X'417979aad0a9cc49818d1960ec95fb80',130834271604215531
"CN=IAMToolset.2,OU=Test,DC=company,DC=net",X'5a936d02842275458c45c1eb932a0f67',130849689154565841
"CN=IAMToolset.3,OU=Test,DC=company,DC=net",X'c03d2d11f8d8fe40a0eac70d41f3e1fd',130849689796313340
"CN=IAMToolset.4,OU=Test,DC=company,DC=net",X'e8b084e9d8c4a8428284ecb40b628da8',130849690015854425
"CN=IAMToolset.5,OU=Test,DC=company,DC=net",X'4b4e17dfce09e049941f3bd0ecddd5bb',130849690271803391
"CN=IAMToolset.6,OU=Test,DC=company,DC=net",X'004454a17c997b43af8e4b2653b491c2',130849690477125089
"CN=IAMToolset.7,OU=Test,DC=company,DC=net",X'8f70d9c64514c1409364624e3b079d42',130849690693072263
"CN=IAMToolset.8,OU=Test,DC=company,DC=net",X'ff70df18badafb4491225b29470b9a3d',130849690864329935
"CN=IAMToolset.9,OU=Test,DC=company,DC=net",X'a081e666a2df3c4481a4f124b489fdd8',130849691049650737
"CN=IAMToolset.1,OU=Test,DC=company,DC=net",X'8c59987d0a5c2a4ea1e98d07a84e1144',130849691453887596
"CN=testmigration,OU=Test,DC=company,DC=net",X'a800d0e29335d248ad990ad31fd5dd52',130732638130905654
"CN=DEFRAVMDPKMCA1,OU=Test,DC=company,DC=net",X'0d67d30bcbbbed48af9ed7736f9b1992',9223372036854775807
I have the SSIS package with two connection managers. One of them is for flat file and I'm reading the column objectGUID from the csv as a string. The thing is I want to convert this column inside a dataflow task to a format which I can push to the [ObjectGuid] varbinary NULL column in the SQL table.
I have use the data conversion transform and tried converting to DT_GUID and DT_BYTES but they both fail at that data conversion step when I run the package.
So what I really want to see is that if I have an objectGUID in csv file as
X'168dea153aab0a45adf8079b94041e90' (string)
I want to see it in the SQL table as
0x168DEA153AAB0A45ADF8079B94041E90 (varBinary)
The error I get on SSIS runtime is:
Error: 0xC02020C5 at Data Flow Task, Data Conversion [2]: Data conversion failed while converting column "ObjectGuid.LeftCleaned" (16) to column "Copy of ObjectGuid.LeftCleaned" (6). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
Error: 0xC0209029 at Data Flow Task, Data Conversion [2]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Data Conversion.Outputs[Data Conversion Output].Columns[Copy of ObjectGuid.LeftCleaned]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion.Outputs[Data Conversion Output].Columns[Copy of ObjectGuid.LeftCleaned]" 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 Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Data Conversion" (2) failed with error code 0xC0209029 while processing input "Data Conversion Input" (3). 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.
Please help
I believe the key is here:
"The value could not be converted because of a potential loss of data."
Ensure you have given a large enough Length to the Data Conversion task to accommodate for the largest possible value in the CSV. Also on the other side you need to make sure that the column can hold that same amount of data after conversion.

SSIS Issue with date conversion

I'm working on importing a CSV into my DB. The data should work, it's data from another application that we used to get through a dblink that we now have to get from CSV thanks to an upgrade.
Dates look like this: 4/30/2001
I tried to do a simple import like I do with numbers and strings, and got an error, so I did a derived column.
The derived column works on the dates that are not null (formula is (DT_DATE)DTE)
The derived column however failed on dates that can contain nulls. I even tried to update the formula to (ISNULL(EDTE) ? NULL(DT_DATE) : (DT_DATE)EDTE). No success, I still get the error:
[Flat File Source - O1 [6743]] Error: Data conversion failed. The data conversion for column
"EDTE" returned status value 2 and status text "The value could not be converted because of a
potential loss of data.".
Originally, in my flat file source, the dates were set to type date, and I got an error before it even got to the derived column. I've changed that to String, and it makes it to derived column, but both boxes are red. Here's the error:
[Derived Column 1 [17270]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.
The "component "Derived Column 1" (17270)" failed because error code 0xC0049063 occurred,
and the error row disposition on "input column "EDTE" (17809)" 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.
Has anyone seen this? Am I importing my data in wrong?
I found the solution.
I import the date as a String. Then using derived column, I use this formula to convert it:
RTRIM([T-DTE]) == "" ? NULL(DT_DATE) : (DT_DATE)[T-DTE]

SSIS Blank Int Flat File Fail on Load

I have an SSIS package I am using to load a Fixed Width flat file. I have put in all the column lengths and have two packages against similar files working correctly. The third however keeps throwing the following error:
[Source 1 [16860]] Error: Data conversion failed. The data conversion for column "Line Number"
returned status value 2 and status text "The value could not be converted because of a
potential loss of data.".
[Source 1 [16860]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.
The "output column "Line Number" (16957)" failed because error code 0xC0209084
occurred, and the error row disposition on "output column "Line Number" (16957)"
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.
After doing some testing this happens for any column I have the is using the DT_I4 Data Type and has a blank in the column. I was going to try using a derived column, but this seems to fail for some of the columns even if I change them to a string data type to handle the blank as a NULL and then do a conversion to an INT later in the data flow.
In the source and the destination task I have the Retain NULL values checkbox ticked however this hasn't changed anything.
Any suggestions on handling this error where INT seems to fail at converting a blank to a NULL?
DT_I4 maps to a four byte signed integer in SSIS.
You were on the right track with your derived column. You just need to add the right expression.
You can try this expression:
ISNULL([Line Number]) ? "0":[Line Number]
This link may also be of use - see the postcode column in the example
http://www.bidn.com/blogs/DonnyJohns/ssas/1919/handling-null-or-implied-null-values-in-an-ssis-derived-column
I ended up using the approach from this blog post:
http://www.proactivespeaks.com/2012/04/02/ssis-transform-all-string-columns-in-a-data-flow-stream/
to handle all of the null and blank columns via a script task and data conversion.

Resources