Dear Friends,
Attached here multiple mdb. How to convert multiple mdb to multiple gdb with data name wise at a time all mdb's any python code available please help me.
Thanks
Santhosh
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:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="keyword token">import</SPAN> os <SPAN class="comment token"># input and output folders</SPAN> folder_mdb <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\mdb2gdb\test\pgdb'</SPAN> <SPAN class="comment token"># input folder</SPAN> folder_gdb <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\mdb2gdb\test\fgdb3'</SPAN> <SPAN class="comment token"># output folder</SPAN> <SPAN class="comment token"># set workspace to mdb folder and lst personal gdb's</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> folder_mdb pgdbs <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListWorkspaces<SPAN class="punctuation token">(</SPAN>workspace_type<SPAN class="operator token">=</SPAN><SPAN class="string token">"Access"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># loop through personal gdb's</SPAN> <SPAN class="keyword token">for</SPAN> pgdb <SPAN class="keyword token">in</SPAN> pgdbs<SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># create output empty output fgdb</SPAN> mdb_name <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> gdb_name <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>mdb_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">".gdb"</SPAN> fgdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>folder_gdb<SPAN class="punctuation token">,</SPAN> gdb_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Create FGDB: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>folder_gdb<SPAN class="punctuation token">,</SPAN> gdb_name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CURRENT"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># list feature datasets</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> pgdb fdss <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListDatasets<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> fdss<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN><SPAN class="string token">''</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># loop through feature datasets to ceate list of RC's</SPAN> lst_rc <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> fds_name <SPAN class="keyword token">in</SPAN> fdss<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Processing FDS: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fds_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> fds_name <SPAN class="operator token">!=</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># create fds</SPAN> fds_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">)</SPAN> sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>fds_mdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>spatialReference arcpy<SPAN class="punctuation token">.</SPAN>CreateFeatureDataset_management<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN> fcs <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'*'</SPAN><SPAN class="punctuation token">,</SPAN> None<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> fc_name <SPAN class="keyword token">in</SPAN> fcs<SPAN class="punctuation token">:</SPAN> fc_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> fc_name<SPAN class="punctuation token">)</SPAN> fc_gdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> fc_name<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># detect relationshipclasses</SPAN> rc_names <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>fc_mdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>relationshipClassNames <SPAN class="keyword token">if</SPAN> len<SPAN class="punctuation token">(</SPAN>rc_names<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">for</SPAN> rc_name <SPAN class="keyword token">in</SPAN> rc_names<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN> <SPAN class="string token">" - rc_name:"</SPAN><SPAN class="punctuation token">,</SPAN> rc_name rc_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> rc_name<SPAN class="punctuation token">)</SPAN> rc_gdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> rc_name<SPAN class="punctuation token">)</SPAN> lst_rc<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>rc_mdb<SPAN class="punctuation token">,</SPAN> rc_gdb<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># copy relationship classes</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy Relationshipclasses"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> rc <SPAN class="keyword token">in</SPAN> lst_rc<SPAN class="punctuation token">:</SPAN> rc_mdb <SPAN class="operator token">=</SPAN> rc<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> rc_name <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN>rc_mdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> rc_gdb <SPAN class="operator token">=</SPAN> rc<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy RC: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>rc_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Copy_management<SPAN class="punctuation token">(</SPAN>rc_mdb<SPAN class="punctuation token">,</SPAN> rc_gdb<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># copy featureclasses (that do not exist yet)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy Featureclasses"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> fds_name <SPAN class="keyword token">in</SPAN> fdss<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Processing FDS: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fds_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> fds_name <SPAN class="operator token">!=</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># create fds</SPAN> fds_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">)</SPAN> sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>fds_mdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>spatialReference fcs <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'*'</SPAN><SPAN class="punctuation token">,</SPAN> None<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> fc_name <SPAN class="keyword token">in</SPAN> fcs<SPAN class="punctuation token">:</SPAN> fc_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> fc_name<SPAN class="punctuation token">)</SPAN> fc_gdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">,</SPAN> fds_name<SPAN class="punctuation token">,</SPAN> fc_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>fc_gdb<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">==</SPAN> <SPAN class="token boolean">False</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy FC: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fc_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Copy_management<SPAN class="punctuation token">(</SPAN>fc_mdb<SPAN class="punctuation token">,</SPAN> fc_gdb<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># copy stand alone tables</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy Standalone tables"</SPAN><SPAN class="punctuation token">)</SPAN> tbls <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListTables<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> tbl_name <SPAN class="keyword token">in</SPAN> tbls<SPAN class="punctuation token">:</SPAN> tbl_mdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>pgdb<SPAN class="punctuation token">,</SPAN> tbl_name<SPAN class="punctuation token">)</SPAN> tbl_gdb <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>fgdb<SPAN class="punctuation token">,</SPAN> tbl_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>tbl_gdb<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">==</SPAN> <SPAN class="token boolean">False</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">" - Copy TBL: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>tbl_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Copy_management<SPAN class="punctuation token">(</SPAN>tbl_mdb<SPAN class="punctuation token">,</SPAN> tbl_gdb<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
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.
Santosh,
Check Importing a feature class (multiple)—ArcGIS Help | ArcGIS Desktop
You can execute this tool with the batch option.
~Shan
Lots of over thinking here.
Simply use ArcCatalog. Create your new FileGeodatabases and then copy and paste your feature datasets into the new data base.
If you have a lot of DB's (by a lot I mean more than 30) there are other ways. I once combined 1400 filegeodatabases into a single Personal Geodatabase using a complicated python script that I built using Model Builder and MS Access.
Hi Sarkar,
No, I want individual gdb's.
There is some code provided here: arcgis desktop - Copying feature classes from Personal Geodatabase to File Geodatabase using ArcPy? - Geographic Informa… however, your geodatabases contain tables, relationshipclass and domains and I doubt if these will be transferred too. Due to the relationshipclasses you will need to use a Standard or Advanced licence to run the code.
Is it that you have many personal geodatabases or are these the only ones? If these are all, it is much faster to copy and paste the content of the personal geodatabase to a file geodatabase.
Are you trying to bring all the mdb's into a single gdb?
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.