Skip to main content
Hi FME users!

 

I have a workbench that read Mapinfo tab file and write it to a GEODATABASE_SDE into Oracle.

 

The error is very weird.  Some record pass but there is a fail on some others.

 

The errors is :

 

 

ERROR |An error occurred while attempting to insert a row into the table 'VLORA1A.ENVIRONNEMENT' using a cursor. The error number from ArcObjects is: '-2147216072'. The error message from ArcObjects is: {Underlying DBMS error eORA-12899: valeur trop grande pour la colonne "VLORA1A"."ENVIRONNEMENT"."REMARQUE_ELEM" (réelle : 266, maximum : 254)

 

 

but the value REMARQUE_ELEM is empty in my data :

 

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `PORTEE_A' has value `1001'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `PORTEE_DE' has value `1001'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `REMARQUE_ELEM' has value `'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(string)        : `RESPONSA' has value `St-Hubert'

 

2014-05-08 08:40:04| 330.5|  0.0|ERROR |Attribute(encoded: utf-8): `SUFCIREF' has value `'

 

 

You can see that the value REMAQUE_ELEM is empty.

 

Even if I try with a value like "PONCEAU" it fail.

 

But Other records with value like "Cabane à sucre, montée Lapointe" pass perfectly

 

 

The column in Oracle is formated like this :

 

REMARQUE_ELEM : VARCHAR2(254 BYTE)

 

 

Do I have to reset the Oracle Table, is it the registry SDE ?

 

It looks like the registry of SDE is synchro with the Oracle table.

 

 

any help would be appreciated!

 

thanks!
Hi,

 

 

first of all, you could try using an AttributeTrimmer on REMARQUE_ELEM to see if that helps.

 

 

If not, make sure that REMARQUE_ELEM is defined with a max length of 254 characters in the FME output feature type.

 

 

David
Hi David,

 

I already have an attribute trimmer down to 253.

 

I also clean the attribute of all blank space that are unnecessary.

 

And my FME output feature type is a char 254.  Seems all clean.

 

I suspect more the mapinfo.  If i run the workbench with a max feature read, it goes well and no fail.  But if I read the whole thing (more than 7000 objects) it fail...

 

GRRRRR

 

 

 


Hi,

 

 

how about inserting a SubstringExtractor just before the output feature type? Send End Index to 253.

 

 

David
What I actually do on the painfull ATTRIBUTE :

 

1 - clean the blank space with AttributeTrimmer

 

2 - Calculate the string lenght

 

3 - if the string lenght is longer than 253 I do a SubstringExtractor (0-252)

 

 

I'm now trying with encoding and decoding just before writing into gdb_sde but still fail
I can push value like "3023, CH. DE LA BUTTE-AUX-RENARDS, VARENNES, COORDONNÉES APPROXIMATIVES" but "PONCEAU" won't pass...

 

 


And if you look at the field definition of REMARQUE_ELEM in ArcCatalog, which length is given there?

 

 

David
The GDB say : Text 254...

 

If I change the value in the MapInfo file it pass.

 

If I wrote back the same value (not copy paste) it pass too...

 

It's the mapinfo I think.  But how can I manage this into a workbench...

 


Well, after many test, the mapinfo is OK, the workbench seems perfect.

 

it looks like a db problem.  but the dba is off for the week.  not good.

 

Any idea welcome!
If I read just a few records (including the one that make fme fail earlier) : full success.

 

If I read many records (including the one that make fme fail earlier : FAIL
Hi David,

 

We finally resolve this :

 

My attribut is 254 char (varchar2 in oracle).

 

But Oracle record the data in HEX encoding and my limit is 508 bytes (2x254 = 508 bytes).

 

So I have to test the lenght of the value to be lower than 254 and the lenght of the value in hexadecimal have to be lower than 508.  If not (in a loop) I test those lenght until I reach the maximum permitted.

 

 

Thank you for your help.

 

 

The problem I don't like is that FME was logging me the wrong entity when the fails occured.

 

The entity after was the problem... I think you should check this.

 

It's the first time it happens to me.

Reply