Advertisement
Guest User

Untitled

a guest
May 26th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. def main():
  2. import arcpy
  3. import os
  4.  
  5. # input and output folders
  6. folder_mdb = r'C:\GeoNet\mdb2gdb\test\pgdb' # input folder
  7. folder_gdb = r'C:\GeoNet\mdb2gdb\test\fgdb3' # output folder
  8.  
  9. # set workspace to mdb folder and lst personal gdb's
  10. arcpy.env.workspace = folder_mdb
  11. pgdbs = arcpy.ListWorkspaces(workspace_type="Access")
  12.  
  13. # loop through personal gdb's
  14. for pgdb in pgdbs:
  15. # create output empty output fgdb
  16. mdb_name = os.path.split(pgdb)[1]
  17. gdb_name = os.path.splitext(mdb_name)[0] + ".gdb"
  18.  
  19. fgdb = os.path.join(folder_gdb, gdb_name)
  20. print("Create FGDB: {}".format(fgdb))
  21. arcpy.CreateFileGDB_management(folder_gdb, gdb_name, "CURRENT")
  22.  
  23. # list feature datasets
  24. arcpy.env.workspace = pgdb
  25. fdss = arcpy.ListDatasets()
  26. fdss.append('')
  27.  
  28. # loop through feature datasets to ceate list of RC's
  29. lst_rc = []
  30. for fds_name in fdss:
  31. print(" - Processing FDS: {}".format(fds_name))
  32. if fds_name != '':
  33. # create fds
  34. fds_mdb = os.path.join(pgdb, fds_name)
  35. sr = arcpy.Describe(fds_mdb).spatialReference
  36. arcpy.CreateFeatureDataset_management(fgdb, fds_name, sr)
  37.  
  38. fcs = arcpy.ListFeatureClasses('*', None, fds_name)
  39. for fc_name in fcs:
  40. fc_mdb = os.path.join(pgdb, fds_name, fc_name)
  41. fc_gdb = os.path.join(fgdb, fds_name, fc_name)
  42.  
  43. # detect relationshipclasses
  44. rc_names = arcpy.Describe(fc_mdb).relationshipClassNames
  45. if len(rc_names) > 0:
  46. for rc_name in rc_names:
  47. print " - rc_name:", rc_name
  48. rc_mdb = os.path.join(pgdb, fds_name, rc_name)
  49. rc_gdb = os.path.join(fgdb, fds_name, rc_name)
  50. lst_rc.append([rc_mdb, rc_gdb])
  51.  
  52.  
  53. # copy relationship classes
  54. print(" - Copy Relationshipclasses")
  55. for rc in lst_rc:
  56. rc_mdb = rc[0]
  57. rc_name = os.path.split(rc_mdb)[1]
  58. rc_gdb = rc[1]
  59. print(" - Copy RC: {}".format(rc_name))
  60. arcpy.Copy_management(rc_mdb, rc_gdb)
  61.  
  62. # copy featureclasses (that do not exist yet)
  63. print(" - Copy Featureclasses")
  64. for fds_name in fdss:
  65. print(" - Processing FDS: {}".format(fds_name))
  66. if fds_name != '':
  67. # create fds
  68. fds_mdb = os.path.join(pgdb, fds_name)
  69. sr = arcpy.Describe(fds_mdb).spatialReference
  70.  
  71. fcs = arcpy.ListFeatureClasses('*', None, fds_name)
  72. for fc_name in fcs:
  73. fc_mdb = os.path.join(pgdb, fds_name, fc_name)
  74. fc_gdb = os.path.join(fgdb, fds_name, fc_name)
  75. if arcpy.Exists(fc_gdb) == False:
  76. print(" - Copy FC: {}".format(fc_name))
  77. arcpy.Copy_management(fc_mdb, fc_gdb)
  78.  
  79. # copy stand alone tables
  80. print(" - Copy Standalone tables")
  81. tbls = arcpy.ListTables()
  82. for tbl_name in tbls:
  83. tbl_mdb = os.path.join(pgdb, tbl_name)
  84. tbl_gdb = os.path.join(fgdb, tbl_name)
  85. if arcpy.Exists(tbl_gdb) == False:
  86. print(" - Copy TBL: {}".format(tbl_name))
  87. arcpy.Copy_management(tbl_mdb, tbl_gdb)
  88.  
  89.  
  90. if __name__ == '__main__':
  91. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement