Migrar clase de relación (Administración de datos)

Resumen

Migra una clase de relación basada en el Id. de objeto a una clase de relación basada en el Id. global.

Uso

  • Esta herramienta modifica una clase de relación existente basada en el Id. de objeto y la convierte en una clase de relación basada en el Id. global para cumplir con los requisitos de la geodatabase en tiempo de ejecución.

  • La clase de entidad o tabla de origen que se utilice en el valor del parámetro Clase de relación de entrada debe tener un campo GlobalID antes de usar esta herramienta. La clase de destino también debe tener un campo GlobalID.

  • La clase de relación de entrada existente debe estar basada en el campo ObjectID. Los datos no se pueden habilitar para el archivado.

  • Esta herramienta admite editar datos versionados y no versionados como entrada.

  • Primero es necesario actualizar la anotación vinculada a entidad de ArcGIS Desktop mediante la herramienta Actualizar dataset.

  • Se recomienda hacer una copia de seguridad de los datos utilizados como entrada para esta herramienta.

Parámetros

EtiquetaExplicaciónTipo de datos
Clase de relación de entrada

Clase de relación basada en el Id. de objeto que se migrará a una clase de relación basada en el Id. global. Las tablas de clases de entidad de origen y de destino deben tener un campo GlobalID existente.

Relationship Class

Salida derivada

EtiquetaExplicaciónTipo de datos
Clase de relación migrada

La clase de relación actualizada.

Relationship Class

arcpy.management.MigrateRelationshipClass(in_relationship_class)
NombreExplicaciónTipo de datos
in_relationship_class

Clase de relación basada en el Id. de objeto que se migrará a una clase de relación basada en el Id. global. Las tablas de clases de entidad de origen y de destino deben tener un campo GlobalID existente.

Relationship Class

Salida derivada

NombreExplicaciónTipo de datos
out_relationship_class

La clase de relación actualizada.

Relationship Class

Muestra de código

Ejemplo 1 de MigrateRelationshipClass (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función MigrateRelationshipClass de modo inmediato.

arcpy.MigrateRelationshipClass_management(r'C:\Data\Relationships.gdb\OneToMany')
Ejemplo 2 de MigrateRelationshipClass (script independiente)

El siguiente script muestra cómo utilizar la función MigrateRelationshipClass en un script independiente.

# Name: MigrateRelationshipClass_Example.py
# Description: Migrate an ObjectID-based relationship class to a GlobalID-based
#       relationship class. This script lists the ObjectID-based relationships classes
#       in a workspace, checks for GlobalIDs in the origin, then runs the tool

# Import system modules
import arcpy

# Set local variables
workspace = r'C:\Data\Relationships.gdb'

# List all of the relationship classes within the given workspace
rc_list = [c.name for c in arcpy.Describe(workspace).children if c.datatype == "RelationshipClass"]

# Build a list of relationship classes which have an OBJECTID based origin class key
rc_migrate = []
for rc in rc_list:
    rc_path = workspace + "\\" + rc
    rc_desc = arcpy.Describe(rc_path)
    for item in rc_desc.OriginClassKeys:
        if "OBJECTID" in item:
            rc_migrate.append(rc_path)

# Check that the origin feature classes have Global Ids
rc_final = []
for rel in rc_migrate:
    originfc = workspace + "\\" + arcpy.Describe(rel).originClassNames[0]
    if arcpy.ListFields(originfc,"","GlobalID"):
        rc_final.append(rel)
        print("Adding {0}  to the list to migrate. \n".format(rel.rsplit("\\",1)[1]))
    else:
        print("{0} must have Global Ids to migrate relationship class.\n".format(originfc.rsplit("\\",1)[1]))

# Pass the list of valid relationship classes into the Migrate Relationship tool
print("Passing valid relationship classes into the Migrate Relationship Class tool.\n")
for rel_class in rc_final:
    print("Migrating {0}... \n".format(rel_class.rsplit("\\",1)[1]))
    arcpy.MigrateRelationshipClass_management(rel_class)
    print(arcpy.GetMessages() + "\n")

Temas relacionados