CÓMO

Realizar una copia de seguridad de elementos de ArcGIS Online en una conexión de base de datos con ArcGIS API for Python

Last Published: January 5, 2021

Resumen

Los elementos de una geodatabase de archivos comprimida (FGDB) pueden tener funcionalidades limitadas para la copia de seguridad de datos. Disponer de los datos en una base de datos facilita el acceso a la visualización de los datos. Realizar una copia de seguridad de los elementos de ArcGIS Online en una conexión de base de datos con ArcGIS API for Python permite descargar, extraer y copiar simultáneamente varios elementos.

Procedimiento

  1. Importe los módulos necesarios y establezca la opción de sobrescritura de salida en True.
from arcgis.gis import GIS import arcpy import os import zipfile import glob import shutil arcpy.env.overwriteOutput = True
  1. Especifique la ruta al proyecto y las credenciales de inicio de sesión.
gis=GIS("https://arcgis.com","username","password") folders = [] root = r"Ruta a la ubicación en la que se descargan los elementos AGOL" items = ['ItemID1', 'ID2', 'ID3', 'ID4'] destination = r"Ruta a la ubicación en la que se extraen las carpetas comprimidas descargadas" outputPath = r"Ruta de archivo completa a la conexión SDE\<connectionname>.sde"
  1. Descargue los elementos deseados, que se almacenan a continuación como FGDB comprimidas, y cree una lista de los elementos descargados.
#la variable 'items' se puede reemplazar para obtener todos los elementos de ArcGIS Online si se necesita realizar una copia de seguridad de todos los elementos for item in items: test = gis.content.get(item) fgdb_title = test.title fgdb_title=fgdb_title.replace('_', '') result = test.export(fgdb, "File Geodatabase") result.download(root) result.delete() folders.append(root +'\\' +fgdb_title + '.zip') print(folders)
  1. Extraiga la FGDB comprimida descargada en una carpeta nueva.
for folder in folders: with zipfile.ZipFile(folder) as zf: folder.replace('_','') zf.extractall(destination)
  1. Elimine los archivos locales (opcional).
Nota: El paso 5 para eliminar los archivos locales solo es necesario si se produce un error al ejecutar el script debido a archivos existentes.
for FGDB in FGDBlist: item_delete = (destination+FGDB+'\\') #Se eliminan las FGDB de la carpeta de destino (opcional) shutil.rmtree(item_delete)
  1. Recupere las FGDB extraídas y recórralas en bucle. Cambie el nombre de las clases de entidad si es necesario y copie la clase de entidad en la conexión SDE.
FGDBlist=os.listdir(destination) for FGDB in FGDBlist: gdb_var=(destination+FGDB+'\\') arcpy.env.workspace=(gdb_var) featureclasses = arcpy.ListFeatureClasses() print(featureclasses) for FC in featureclasses: rename = arcpy.Rename_management(FC, FC + "_copy", "FeatureClass") print(rename) arcpy.FeatureClassToFeatureClass_conversion(gdb_var + FC + "_copy", outputPath, FC + "_copy")

Id. de artículo: 000024135

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga