HOW TO
GIS managers and administrators sometimes need to delete all feature datasets, feature classes and tables from a database owned by a particular schema.
Note:
schema=DATAOWNER is case-sensitive:
• Oracle: DATAOWNER
• SQL Server: db_name.DATAOWNER
• PostgreSQL: db_name.DATAOWNER
Code:
import arcpy, os, string
def DelDatasets(logWorkspace,dLogName,workspace,schema):
logfile = open(os.path.join(logWorkspace, dLogName), 'w')
arcpy.env.workspace = workspace
datasetList = arcpy.ListDatasets()
for dataset in datasetList:
if dataset.startswith(schema):
arcpy.Delete_management(dataset)
print ("Deleted Feature dataset {0}".format(dataset))
logfile.write("Deleted Feature dataset {0}".format(dataset))
logfile.write("\n")
logfile.close()
del logfile, datasetList
def DelFeatureClasses(logWorkspace,fLogName,workspace,schema):
logfile = open(os.path.join(logWorkspace, fLogName), 'w')
arcpy.env.workspace = workspace
fcList = arcpy.ListFeatureClasses()
for fc in fcList:
if fc.startswith(schema):
arcpy.Delete_management(fc)
print ("Deleted feature class {0}".format(fc))
logfile.write("Deleted feature class {0}".format(fc))
logfile.write("\n")
logfile.close()
del logfile, fcList
def DelTables(logWorkspace,tLogName,workspace,schema):
logfile = open(os.path.join(logWorkspace, tLogName), 'w')
arcpy.env.workspace = workspace
tableList = arcpy.ListTables()
for table in tableList:
if table.startswith(schema):
arcpy.Delete_management(table)
print ("Deleted table {0}".format(table))
logfile.write("Deleted table {0}".format(table))
logfile.write("\n")
logfile.close()
del logfile, tableList
if __name__ == "__main__":
logWorkspace = "C:/Temp"
workspace = "C:/connections/LOCATOR_CONN/DATAOWNER.sde"
dLogName = "Log_dataset_del.txt"
fLogName = "Log_fc_del.txt"
tLogName = "Log_table_del.txt"
schema = "sde.DATAOWNER"
DelDatasets(logWorkspace,dLogName,workspace,schema)
DelFeatureClasses(logWorkspace,fLogName,workspace,schema)
DelTables(logWorkspace,tLogName,workspace,schema)
Get help from ArcGIS experts
Download the Esri Support App