I have an issue with loading a field in a table using OracleBulkCopyActivity from a flat file. In Oracle, the field is NUMBER(22,0). In the file, the field is 16 in length. I'm loading the file using ReadCsvToDataTableActivity from the DataTable to an IdataReader. Then I'm trying to use the OracleBulkCopyActivity. This is the data I'm trying to push: 12345678910111213141516
This is the error I am receiving:
RREUR/ERROR GridTools.Javelin.Common.BusinessException: Error in row 'x' column 'xx' ORA-26093: input data column size (xx) exceeds the maximum input size (22).
On this site https://stackoverflow.com/questions/5164805/oracle-column-value-size-issue/14465332, I found that Oracle bulk copy cannot handle converting strings to decimal or long when the string length exceeds 11. What is the best solution to fix this?
To resolve this error, you need to make sure the source data type is decimal or long, instead of string. The error message is telling us that the max string length for such a conversion is 11.
This is by design and expected behavior. The default type is System.String. You will need to specify column datatype. This is usually done by a DBA because this is an Oracle limitation.
Here are instructions on how to change a column's data type: http://www.dba-oracle.com/t_alter_table_change_column_data_type.htm
Here is more information about String and Long data types: https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1824
As a workaround, you can create a second DataTable so that the field that the numbers are in now flag as integers. Then create a select to the destination table to see the data type.
After that you will just need to move the data to the new DataTable object.
If you experience any further issues, please open a support case by going to https://www.ca.com/us/services-support/ca-support/contact-support.html.