sql-serveroracle-databasessisattunity

SSIS - How to convert real values for Oracle?


I'm facing a problem in a package to import some data from a MySQL table to Oracle table and MS SQL Server table. It works well from MySQL to SQL Server, however I get an error when I want to import to Oracle.

The table I want to import contains an attribute (unitPrice) of data type DT_R8.

enter image description here

The destination data type for Oracle is a DT_NUMBERIC as you can see in the capture.

enter image description here

I added a conversion step to convert the unitPrice data from DT_R8 to DT_NUMERIC.

enter image description here

It doesn't work, I get the following error.

enter image description here

I found the detail of the error :

An ORA-01722 ("invalid number") error occurs when an attempt is made to convert a character string into a number, and the string cannot be converted into a valid number. Valid numbers contain the digits '0' through '9', with possibly one decimal point, a sign (+ or -) at the beginning or end of the string, or an 'E' or 'e' (if it is a floating point number in scientific notation). All other characters are forbidden.

However, I don't know how to fix.

EDIT : I added a component to redirect rows/errors to an Excel file.

enter image description here

The following screenshot show the result of the process including errors :

enter image description here

By browsing the only 3000 rows recorded, It seems the process accept only int values no real. So if the price is equal to 10, it's OK but if it's 10,5 it's failed.

Any idea to solve this issue ?


Solution

  • Your NLS environment does not match the expected one. Default, Oracle assumes that "," is the grouping character and "." is the decimal separator. Make sure that your session uses the correct value for the NLS_NUMERIC_CHARACTERS parameter.

    See Setting Up a Globalization Support Environment for docu.