Select to view content in your preferred language

Use Python to Truncate & Load Data between 2 geodatabases

488
3
05-09-2023 07:17 AM
AndrewReynoldsDevon
Regular Contributor

I want to automate the truncate & loading of data between 2 enterprise geodatabases using python.

There are 6 features which are mixture of polygon & point features.

Has anyone got any idea how to code this simply?

0 Kudos
3 Replies
Luke_Pinner
MVP Regular Contributor

Assuming two separate geodatabases with all feature classes having the same name and schema:

feature_classes = ["fc1", "fc2", "fc3", "etc..."]

for feature_class in feature_classes:
    
    arcpy.management.TruncateTable(f"dir:/path/to/connection1.sde/schema.{feature_class}")
    arcpy.management.Append([f"dir:/path/to/connection2.sde/schema.{feature_class}"], 
                            f"dir:/path/to/connection1.sde/schema.{feature_class}", 
                            "TEST")
0 Kudos
AndrewReynoldsDevon
Regular Contributor

Hi,

It's not all of the features from the geodb just 6 of them & they're enterprise db's so I have connection files for each geodb. How would I specify those in the script above? Also I need to be sure I only truncate/amend the 6 features & not the other features within the geodb

0 Kudos
Luke_Pinner
MVP Regular Contributor

Please clarify whether you mean "6 features" or 6 feature classes.  A geodatabase (either file or enterprise) can hold multiple feature classes. A feature class can have multiple features.  To use a file system analogy, a directory/folder (geodatabase) can hold many text files (feature classes). A text file can store many lines of text (features).

Truncate means to remove all features from a feature class, the feature class is not removed. The code I provided does that for the 6 specified feature classes. 

Do you actually mean you have 6 features you need to delete from a single feature class in one gdb and then replace those features with 6 features selected from another feature class in a different gdb?

If so, truncate is definitely not what you want. You need to select the features you want to delete (e.g. select by attribute/location tools or make feature layer tool with a where clause) in your script and then run delete features tool.

0 Kudos