Mise à jour 4/11/2014
Il semble que le script se soit bloqué sur l'outil Supprimer les fonctionnalités, j'ai donc basculé vers Tronquer la table, comme suggéré dans la réponse ci-dessous. J'ai également supprimé les variables inutilisées de l'outil d'ajout.
Mise à jour 4/10/2014
J'ai exécuté ce script sur l'ordinateur de mon collègue (sa machine a plus de mémoire ET contient ArcGIS 10.0 / Python26) et il s'est exécuté rapidement. Hourra! Une fois que mon support technique aura trouvé le CD d'ArcGIS 10.0, j'installerai et testerai pour voir si cela améliore la vitesse sur ma machine. Pour être clair, nous exécutons le même script, notre lecteur réseau et notre connexion à la base de données sont mappés de manière identique et les instructions d'impression sont les mêmes. Je publierai une mise à jour ici une fois que cela se produira.
Mettre fin aux mises à jour
J'ai besoin d'augmenter la vitesse de certains scripts Python qui effectuent des mises à jour sur une base de données Oracle. J'ai eu ces scripts Python fonctionnant bien pendant un an +, via des tâches planifiées et des fichiers batch pour lancer les scripts. La semaine dernière, je suis passé d'un XP à une machine Windows 7 et ArcGIS 10.0 -> 10.1. Depuis lors, les scripts sont devenus terriblement lents. Si j'exécute ce script à l'aide d'une petite classe d'entités (contenant environ 20 fonctions), il s'exécute en 30 secondes. Si j'utilise une classe d'entités moyenne (~ 80 000 enregistrements), elle s'exécute en 15 minutes. La classe d'entités que j'ai vraiment besoin de pouvoir transférer rapidement contient environ 1 000 000 d'enregistrements - le script va jusqu'à l'instruction print pour vérifier si les fichiers existent (si instruction dans le code ci-dessous). Ce processus ne prendrait que 35 minutes pour se terminer sur ma machine XP / ArcGIS 10.0.
Vous trouverez ci-dessous le code simplifié avec lequel j'ai testé. Quelqu'un a-t-il des suggestions sur ce que je peux faire pour augmenter la vitesse? Merci, Patty
import arcpy, os, sys
from arcpy import env
arcpy.env.overwriteOutput = True
from datetime import datetime
import smtplib
import string
import urllib
#Define variables
inWorkspace = "O:/LANDING_PAD/BOE/example.gdb"
lpFeatures = inWorkspace + os.sep + "fc1"
outWorkspace = "Database Connections\\THIS.sde"
arcpy.env.workspace = outWorkspace
workspace = ""
copyFC = outWorkspace + os.sep + "SDE.fc1_1" #The feature class the script will update via delete and append
schema_type = "NO_TEST"
fieldMappings = ""
subtype = ""
t = datetime.now()
print "This script began at: " + str(t)
if arcpy.Exists(lpFeatures) is True and arcpy.Exists(copyFC) is True:
print "Both files exist. Beginning delete..."
arcpy.DeleteFeatures_management(copyFC) #(copyFC)
print "ALL DONE DELETING!"
arcpy.Append_management(lpFeatures, copyFC, schema_type, fieldMappings, subtype) #Append data from landing pad to db
print "ALL DONE APPENDING!"
record_count = arcpy.GetCount_management(lpFeatures)
print record_count
r = datetime.now()
print "This script ended at: " + str(r)
Delete_management()
, puis la recréer avec CopyFeatures_management()
ou FeatureClassToFeatureClass_conversion()
?