That importing feature class (multiple) will not take care of your related tables and relationshipclasses. The Copy—Help | ArcGIS Desktop tool is more equipped for this purpose.
Here is some code that should do the job.
Change:
- input MDB folder and output FGDB folder on line 6 and
def main():
import arcpy
import os
folder_mdb = r'C:\GeoNet\mdb2gdb\test\pgdb'
folder_gdb = r'C:\GeoNet\mdb2gdb\test\fgdb3'
arcpy.env.workspace = folder_mdb
pgdbs = arcpy.ListWorkspaces(workspace_type="Access")
for pgdb in pgdbs:
mdb_name = os.path.split(pgdb)[1]
gdb_name = os.path.splitext(mdb_name)[0] + ".gdb"
fgdb = os.path.join(folder_gdb, gdb_name)
print("Create FGDB: {}".format(fgdb))
arcpy.CreateFileGDB_management(folder_gdb, gdb_name, "CURRENT")
arcpy.env.workspace = pgdb
fdss = arcpy.ListDatasets()
fdss.append('')
lst_rc = []
for fds_name in fdss:
print(" - Processing FDS: {}".format(fds_name))
if fds_name != '':
fds_mdb = os.path.join(pgdb, fds_name)
sr = arcpy.Describe(fds_mdb).spatialReference
arcpy.CreateFeatureDataset_management(fgdb, fds_name, sr)
fcs = arcpy.ListFeatureClasses('*', None, fds_name)
for fc_name in fcs:
fc_mdb = os.path.join(pgdb, fds_name, fc_name)
fc_gdb = os.path.join(fgdb, fds_name, fc_name)
rc_names = arcpy.Describe(fc_mdb).relationshipClassNames
if len(rc_names) > 0:
for rc_name in rc_names:
print " - rc_name:", rc_name
rc_mdb = os.path.join(pgdb, fds_name, rc_name)
rc_gdb = os.path.join(fgdb, fds_name, rc_name)
lst_rc.append([rc_mdb, rc_gdb])
print(" - Copy Relationshipclasses")
for rc in lst_rc:
rc_mdb = rc[0]
rc_name = os.path.split(rc_mdb)[1]
rc_gdb = rc[1]
print(" - Copy RC: {}".format(rc_name))
arcpy.Copy_management(rc_mdb, rc_gdb)
print(" - Copy Featureclasses")
for fds_name in fdss:
print(" - Processing FDS: {}".format(fds_name))
if fds_name != '':
fds_mdb = os.path.join(pgdb, fds_name)
sr = arcpy.Describe(fds_mdb).spatialReference
fcs = arcpy.ListFeatureClasses('*', None, fds_name)
for fc_name in fcs:
fc_mdb = os.path.join(pgdb, fds_name, fc_name)
fc_gdb = os.path.join(fgdb, fds_name, fc_name)
if arcpy.Exists(fc_gdb) == False:
print(" - Copy FC: {}".format(fc_name))
arcpy.Copy_management(fc_mdb, fc_gdb)
print(" - Copy Standalone tables")
tbls = arcpy.ListTables()
for tbl_name in tbls:
tbl_mdb = os.path.join(pgdb, tbl_name)
tbl_gdb = os.path.join(fgdb, tbl_name)
if arcpy.Exists(tbl_gdb) == False:
print(" - Copy TBL: {}".format(tbl_name))
arcpy.Copy_management(tbl_mdb, tbl_gdb)
if __name__ == '__main__':
main()
Relationshipclasses will be copied to the Feature Dataset of the Featureclass where the RC was detected. They are not copied to the root where the RC's are stored in the input MDB.