Migrer la classe de relations (Gestion des données)
Récapitulatif
Migre une classe de relations ObjectID vers une classe de relations GlobalID.
Utilisation
-
Cet outil permet de modifier une classe de relations ObjectID en une classe de relations GlobalID 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 qui fait partie de la Classe de relations en entrée comporte un champ GlobalID. Aucun champ GlobalID n'est requis dans la classe de destination, mais un champ GUID lui est ajouté dans la sortie de cet outil.
La classe de relations en entrée existante doit comporter un champ ObjectID. L'archivage peut être activé sur les données versionnées ou non versionnées.
Syntaxe
Paramètre | Explication | Type de données |
in_relationship_class |
Classe de relations ObjectID à migrer vers une classe de relations GlobalID. La classe d'entités ou la table d'origine doit déjà comporter des valeurs GlobalID. | Relationship Class |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de l'outil MigrateRelationshipClass en mode immédiat.
arcpy.MigrateRelationshipClass_management(r'C:\Data\Relationships.gdb\OneToMany')
Le script Python autonome suivant montre comment utiliser l'outil 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.MigrateRelationshipClass_management(rel_class)
print(arcpy.GetMessages() + "\n")