Migrer une classe de relations (Outils de gestion des données)
Résumé
Migre une classe de relations basée sur l’ID d’objet vers une classe de relations basée sur l’ID global.
Utilisation
Cet outil permet de modifier une classe de relations existante basée sur l’ID d’objet en une classe de relations basée sur l’ID global pour satisfaire les exigences des géodatabases d’exécution.
Avant d’utiliser cet outil, assurez-vous que la classe d’entités ou la table d’origine utilisée dans la valeur du paramètre Input Relationship Class (Classe de relations en entrée) comporte un champ GlobalID. La classe de destination doit également comporter un champ GlobalID.
La classe de relations en entrée existante doit être basée sur le champ ObjectID. L’archivage ne peut pas être activé sur les données.
Cet outil prend en charge les données versionnées et non versionnées en entrée.
Classe de relations basée sur l’ID d’objet à migrer vers une classe de relations basée sur l’ID global. Les classes d’entités d’origine et de destination doivent comporter un champ GlobalID.
Classe de relations basée sur l’ID d’objet à migrer vers une classe de relations basée sur l’ID global. Les classes d’entités d’origine et de destination doivent comporter un champ GlobalID.
Relationship Class
Sortie dérivée
Nom
Explication
Type de données
out_relationship_class
Classe de relations mise à jour.
Relationship Class
Exemple de code
Exemple 1 d’utilisation de l’outil MigrateRelationshipClass (fenêtre Python)
Le script de fenêtre Python ci-dessous illustre l’utilisation de la fonction MigrateRelationshipClass en mode immédiat.
Exemple 2 d’utilisation de l’outil MigrateRelationshipClass (script autonome)
Le script ci-après illustre l’utilisation de la fonction MigrateRelationshipClass dans un script autonome.
# 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.management.MigrateRelationshipClass(rel_class)
print(arcpy.GetMessages() + "\n")