Skip to main content

Hi, is it possible to control the table creation parameter from features when using a database writer? Like one can control the feature creation, removal or updating using an attribute fme_db_operation on the feature. I'm looking for some parameter fme_db_table_handling or so, but it does not seem to be documented?

You can create a Parameter to do this. You can just generate that one yourself if needed by clicking the arrow next to it, User Parameter, Create User Parameter.

 

I don't know of an attribute which does this, like fme_db_operation.


Hi @nielsgerrits​ Thanks, I thought I remembered from an old database training that there was such an attribute. If I come across it, I will mention it here.


Hi @Helmoet de Zwijger​, there are some mentions of an attribute 'fme_table_handling' in the knowledge base: here and here.

In Feature Type 'xxxxxx', 'fme_table_handling' has invalid value 'CREATE_IF_MISSING'. Possible values include: 'CREATE_IF_MISSING', 'DROP_CREATE', 'USE_EXISTING'

This may well be the attribute you are looking for. Not sure whether it still works though...


Hi @Helmoet de Zwijger​, there are some mentions of an attribute 'fme_table_handling' in the knowledge base: here and here.

In Feature Type 'xxxxxx', 'fme_table_handling' has invalid value 'CREATE_IF_MISSING'. Possible values include: 'CREATE_IF_MISSING', 'DROP_CREATE', 'USE_EXISTING'

This may well be the attribute you are looking for. Not sure whether it still works though...

Good find!


O wow @geomancer​ , you found it... It is even still documented like here. However, it seems it does not work anymore by assigning it a value from, say, an AttributeCreator. I presume that is meant to be? It even appears in the .fmw scripts (line 12):

#!     <FEAT_ATTRIBUTE ATTR_NAME="downloadurl" ATTR_TYPE="char(255)" ATTR_HAS_PORT="true" ATTR_VALUE=""/>
#!     <FEAT_ATTRIBUTE ATTR_NAME="localfile" ATTR_TYPE="char(255)" ATTR_HAS_PORT="true" ATTR_VALUE=""/>
#!     <DEFLINE_PARM PARM_NAME="fme_advanced_group" PARM_VALUE="FME_DISCLOSURE_OPEN"/>
#!     <DEFLINE_PARM PARM_NAME="fme_configuration_common_group" PARM_VALUE=""/>
#!     <DEFLINE_PARM PARM_NAME="fme_configuration_group" PARM_VALUE=""/>
#!     <DEFLINE_PARM PARM_NAME="fme_feature_operation" PARM_VALUE="INSERT"/>
#!     <DEFLINE_PARM PARM_NAME="fme_match_columns" PARM_VALUE="<Unused>"/>
#!     <DEFLINE_PARM PARM_NAME="fme_selection_group" PARM_VALUE=""/>
#!     <DEFLINE_PARM PARM_NAME="fme_selection_method" PARM_VALUE="<Unused>"/>
#!     <DEFLINE_PARM PARM_NAME="fme_spatial_group" PARM_VALUE=""/>
#!     <DEFLINE_PARM PARM_NAME="fme_table_creation_group" PARM_VALUE="FME_DISCLOSURE_CLOSED"/>
#!     <DEFLINE_PARM PARM_NAME="fme_table_handling" PARM_VALUE="CREATE_IF_MISSING"/>
#!     <DEFLINE_PARM PARM_NAME="fme_update_geometry" PARM_VALUE="<Unused>"/>
#!     <DEFLINE_PARM PARM_NAME="fme_where_builder_clause" PARM_VALUE="<Unused>"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_allow_serial_writing" PARM_VALUE="NO"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_create_gist_index" PARM_VALUE="YES"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_spatial_column" PARM_VALUE="geom"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_spatial_column_type" PARM_VALUE="geometry"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_srid" PARM_VALUE="28992"/>
#!     <DEFLINE_PARM PARM_NAME="postgis_vacuum_analyze" PARM_VALUE="NO"/>
#! </FEATURE_TYPE>
#! </FEATURE_TYPES>

Or am I expecting irrelevant things @Ryan Cragg​ ?


Hi @Helmoet de Zwijger​ , it's always nice to help an old friend.

As you say, the parameter 'fme_table_handling' still exists, and is still in use in the fmw files. 

Another example (line 8):

ORACLE_NONSPATIAL_1_DEF <table name> 
oracle_create_table "" 
oracle_drop_table "" 
oracle_table_writer_mode "" 
oracle_update_key_columns "" 
oracle_truncate_table "" 
fme_feature_operation INSERT
fme_table_handling DROP_CREATE   
<field definitions>

I hope someone from Safe can answer your questions!


Hi @Helmoet de Zwijger​,  this is an interesting one! I discussed the issue with my team and it sounds like the fme_table_handling parameter must be set before the workspace is run.

Some possible ways to get around this could be to try using a parameter fetcher or a workspace runner and set the parameter value before the workspace is run. Let me know how it goes, always here to help!


Reply