Question

Write ArcSDE (difference between SDE30 and ESRI Geodatabase)

  • 3 September 2013
  • 6 replies
  • 5 views

Badge +21
I have managed to create new features and put them on a DYNAMIC SDE30 writer that inserts the features, deletes the features and updates features correctly by using fme_db_operation = UPDATE, INSERT, DELETE and on the WRITER Writer mode: UPDATE.

 

 

However when I try to do the same with an ESRI GEODATABASE_SDE it logs that the features are written - however there is nothing in the database (also not in any other features or tables on the same server). Doesn`t the ESRI GEODATABASE_SDE writer handle the fme_db_operation parameter the same way as the SDE30 writer?

 

 

Any other tricks to be aware of when working with writing to ArcSDE?

6 replies

Badge +9
Hello

 

 

As far as I know fme_db_operation should work for all DB target formats.

 

SDE30 writer uses the C++ interface whereas GEODATABASE writers uses ArcObjects interface.

 

 

1) I would check the log for "Features not written due to no schema defined" ...

 

2) I would check for problems in Connection parameters

 

3) try a GEODATBASE FileGDB or Personal GDB. In most situations they should work identical to SDE GEODATABASE.

 

 

Well, so far that's what I do in similar cases. Hope it helps.

 

 

Michael
Badge +21
Hi Michael, thanks for the reply!

 

 

I have already checked point 1 and 2. Speaking with the DB-manager he "did something" on the server side for those tables. He enabled versioning on the "subfeatures" and not only the "parent-features" for those objects. Not sure how to explain it, or why it works - however now when the versioning is correctly set it seems to work as wanted.

 

 

Easy to get confused by the FME-Write-Successfull - which only means FME has SENT the features to ArcSDE - however they can still fail after sent from FME (so actually not written to DB).

 

 

Thanks again!
I have worked with both writers extensively in the past and this is actually something that I purposefully will use the SDE30 writer for.  The SDE30 writer actually performs an "UPSERT" (updates features when found, but inserts if key attribute is not found). 

 

 

The Geodatabase SDE writer requires UPDATE, INSERT or DELETE to be defined via fme_db_operation and will only do that operation (if you tell it to UPDATE a feature that doesn't exist it basically ignores it).
Also, I have put in an enhancement request for UPSERT to be added for other database writers.  It is much easier than using a bunch of UpdateDetectors to determine database operation.
Hey,

 

 

You need to be careful when using FME to write to a versioned feature class in SDE. If you write your changes to the Default version, you can easily overwrite edits done by others when the Reconcile and Post process occurs. I have created an FME version in ArcGIS at the appropriate level in the versioning tree. Set you FME output to write to that FME version and make sure you have Versioning set as your Transaction Type under Advanced settings. Run your FME workspace. Then you can use the Reconcile and Post process on the ArcGIS side to introduce your changes up the versioning tree. This will allow you to resolve any conflicts that may occur.
Badge +21
Thanks for all the help. There are some articles, videos and tutorials about writing to ArcSDE - however these points from actual users are more valuable than those.

 

 

Not sure if it is easier to write to another database (for instance PostGIS), however I guess all databases (and formats) have different difficulties.

 

 

Reply