Ecriture d'un script de géodatabase ArcSDE dans Oracle

Vous pouvez modifier et utiliser les scripts Python fournis dans cette rubrique pour vous connecter à une géodatabase ArcSDE et la mettre à niveau.

Les premiers scripts utilisent un fichier de connexion ArcSDE existant pour se connecter à une géodatabase et la mettre à niveau.

Le deuxième script illustre la façon dont vous pouvez fournir les informations de connexion dans le script utilisé pour mettre à niveau la géodatabase. C'est particulièrement utile si vous n'avez pas accès à ArcGIS Desktop ; vous pouvez exécuter le script Python à partir d'un ordinateur où ArcGIS Engine ou ArcGIS Server Enterprise (Standard ou Avancé) est installé, fournir les informations de connexion et mettre à niveau la géodatabase.

La connexion que vous établissez à la géodatabase, que ce soit par le biais d'un fichier de connexion ArcSDE existant ou de paramètres du script, est une connexion directe. La machine sur laquelle vous exécutez le script doit comporter les éléments suivants :

Lisez et effectuez les procédures présentées aux rubriques Préparation à la mise à niveau d'une géodatabase dans Oracle avant de commencer la mise à niveau.

Étapes :
  1. Copiez un de ces scripts dans la fenêtre Python d'ArcGIS Desktop ou dans n'importe quel IDE (environnement de développement intégré) Python, tel que PythonWin ou WING. Modifiez les valeurs des variables pour qu'elles correspondent aux informations de votre site.
    • Si vous avez un fichier de connexion ArcSDE existant qui utilise une connexion directe et se connecte en tant qu'administrateur ArcSDE, modifiez et utilisez un des scripts suivants, selon votre système d'exploitation :
      # Name: upgradesdegdb_Example.py
      # Description: Connect from a Windows computer 
      # with an existing ArcSDE connection file 
      # and upgrade an ArcSDE for Oracle geodatabase
      # Author: ESRI
      
      # Import arcpy module
      import arcpy
       
      # Local variables:
      Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>"
      Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>"
      
      # Process: Upgrade Geodatabase
      arcpy.UpgradeGDB_management(<Connection file>, "PREREQUISITE_CHECK", "UPGRADE")
      # Name: upgradesdegdb_Example.py
      # Description: Connect from a Linux or UNIX computer 
      # with an existing ArcSDE connection file 
      # and upgrade an ArcSDE for Oracle geodatabase
      # Author: ESRI
      
      # Import arcpy module
      import arcpy
       
      # Local variables:
      Output_Workspace = "<user>/connections/<Connection_file>"
      Default_gdb = "<user>/connections/<Connection_file>"
      
      # Process: Upgrade Geodatabase
      arcpy.UpgradeGDB_management(<Connection_file>, "PREREQUISITE_CHECK", "UPGRADE")
    • Si vous n'avez pas de fichier de connexion ArcSDE sur l'ordinateur à partir duquel écrire la mise à niveau, vous pouvez copier et modifier le script suivant :
      """
      Name: upgrade_gdb.py
      Description: Provide connection information to an Enterprise geodatabase 
      and upgrade the geodatabase
      Type upgrade_gdb.py -h or upgrade_gdb.py --help for usage
      """
      
      # Import system modules
      import arcpy, os, optparse, sys
      
      
      # Define usage and version
      parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0; valid for 10.0 and 10.1 release")
      
      #Define help and options
      parser.add_option ("-s", dest="Server", type="string", default="", help="RDBMS server name")
      parser.add_option ("-i", dest="Service", type="string", default="", help="Use direct connection syntax")
      parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
      parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name")
      parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password")
      parser.add_option ("-v", dest="Version", type="string", help="ArcSDE version name")
      parser.add_option ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive):  TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only.  Default=FALSE")                   
      parser.add_option ("-d", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
      
      
      # Check if value entered for option
      try:
      	(options, args) = parser.parse_args()
      
      	
      #Check if no system arguments (options) entered
      	if len(sys.argv) == 1:
      		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
      		parser.print_help()
      		sys.exit(3)
      	
      
      	#Usage parameters for spatial database connection to upgrade
      	server = options.Server
      	service = options.Service	
      	account_authentication = options.account_authentication.upper()
      	username = options.User.lower() 
      	password = options.Password	
      	version = options.Version.upper()
      	do_upgrade = options.Upgrade
      	database = options.Database.lower()
      	
      	
      	# Get the current product license
      	product_license=arcpy.ProductInfo()
      	
      	
      	# Checks required license level to upgrade
      	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
      		print "\n" + product_license + " license found!" + "  Enterprise geodatabase upgrade requires an ArcEditor, ArcInfo, ArcGIS Engine Geodatabase Update, or ArcGIS Server license."
      		sys.exit("Re-authorize ArcGIS before upgrading.")
      	else:
      		print "\n" + product_license + " license available!  Continuing to upgrade..."
      		arcpy.AddMessage("+++++++++")
      	
      	
      	# Check if direct connection
      	if service.find(":") <> -1:  #This is direct connect
      		ServiceConnFileName = service.replace(":", "")
      		ServiceConnFileName = ServiceConnFileName.replace(";", "")
      		ServiceConnFileName = ServiceConnFileName.replace("=", "")
      		ServiceConnFileName = ServiceConnFileName.replace("/", "")
      		ServiceConnFileName = ServiceConnFileName.replace("\\", "")
      	else:
      		arcpy.AddMessage("\n+++++++++")
      		arcpy.AddMessage("Exiting!!")
      		arcpy.AddMessage("+++++++++")
      		sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.")
      	
      	
      	# Local variables
      	Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + database + "_" + username    
      	
      	if os.environ.get("TEMP") == None:
      		temp = "c:\\temp"	
      	else:
      		temp = os.environ.get("TEMP")
      	
      	if os.environ.get("TMP") == None:
      		temp = "/usr/tmp"		
      	else:
      		temp = os.environ.get("TMP")  
      	
      	Connection_File_Name = temp + os.sep + Conn_File_NameT + ".sde"
      	
      	
      	# Check for the .sde file and delete it if present
      	arcpy.env.overwriteOutput=True
      	
      	
      	# Variables defined within the script; other variable options commented out at the end of the line
      	saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
      	saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
      	
      	
      	print "\nCreating ArcSDE Connection File...\n"
      	# Process: Create ArcSDE Connection File...
      	# Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version,   save_version_info
      	arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
      	for i in range(arcpy.GetMessageCount()):
      		if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
      			arcpy.AddReturnMessage(i)
      			arcpy.AddMessage("\n+++++++++")
      			arcpy.AddMessage("Exiting!!")
      			arcpy.AddMessage("+++++++++\n")
      			sys.exit(3)            
      		else:
      			arcpy.AddReturnMessage(i)
      			arcpy.AddMessage("+++++++++\n")
      	
      	
      	# Process: Upgrade geodatabase...
      	try:
      		if do_upgrade.lower() == "true":
      			print "Upgrading Geodatabase...\n"
      			arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "UPGRADE")
      			for i in range(arcpy.GetMessageCount()):
      				arcpy.AddReturnMessage(i)
      			arcpy.AddMessage("+++++++++\n")
      	
      		else:
      			print "Running Pre-Requisite Check...\n"
      			arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "NO_UPGRADE")
      			for i in range(arcpy.GetMessageCount()):
      				arcpy.AddReturnMessage(i)
      			arcpy.AddMessage("+++++++++\n")
      	
      	except:
      		for i in range(arcpy.GetMessageCount()):
      			arcpy.AddReturnMessage(i)
      			
      #Check if no value entered for option	
      except SystemExit as e:
      	if e.code == 2:
      		parser.usage = ""
      		print "\n"
      		parser.print_help()   
      		parser.exit(2)
  2. Exécutez le script que vous avez copié et modifié pour effectuer la vérification préalable et mettre à niveau la géodatabase.

    Reportez-vous à la rubrique Ecriture de scripts Python pour plus d'informations sur l'utilisation de Python.

Rubriques associées


3/6/2012