Secuenciar los comandos de la creación de geodatabase en Informix
Puede copiar y alterar una secuencia de comandos de ejemplo para crear una geodatabase en una base de datos IBM Informix.
Existen tareas adicionales que debe completar antes de ejecutar la secuencia de comandos. Aquellas tareas y secuencias de comandos en si se describen en los siguientes pasos:
- Instale y configure Informix en el servidor.
- Asegúrese de que el módulo de búsqueda de texto básico de Informix esté registrado.
- Registre el módulo Spatial DataBlade de Informix.
- Cree un inicio de sesión en el sistema operativo denominado sde en el servidor de Informix.
- Realice los cambios siguientes en el archivo ONCONFIG de Informix:
- Elimine el comentario del parámetro VPCLASS jvp,num=1.
Esto permite crear la función sde.retrieve_uid() en la geodatabase, que es necesaria para la réplica, el uso de mapas sin conexión y las ediciones SQL de tablas que contienen columnas globales de Id. o GUID.
- Defina el parámetro USEOSTIME como 1 para usar la precisión de subsegundos en los valores de tiempo.
La definición de este parámetro le permite implementar flujos de trabajo de edición que exigen la edición de datos no versionados mientras está desconectado de la red.
- Reinicie Informix para implementar los cambios que ha realizado en el archivo ONCONFIG.
- Elimine el comentario del parámetro VPCLASS jvp,num=1.
- Cree una base de datos en la instancia de Informix y configure los espacios de almacenamiento.
- Conceda la función EXTEND y el privilegio RESOURCE al usuario sde que creo en el paso 4.
- Si ejecutará la secuencia de comandos Python desde un equipo diferente al servidor Informix, instale y configure el cliente Informix en el equipo desde el cual ejecutará la secuencia de comandos.
El cliente Informix se puede descargar del Portal de atención al cliente de Esri. Vea la documentación de Informix para obtener las instrucciones para instalar el cliente. Si está instalando el cliente Informix para ejecutarlo con un cliente ArcGIS de 32 bits, instale el cliente IConnect de Informix de 32 bits. Si está instalando el cliente Informix para ejecutarlo con ArcGIS for Server, instale el cliente IConnect de 64 bits. Vea Configurar una conexión con Informix para obtener más información.
- Copie esta secuencia de comandos de ejemplo en la ventana de Python en ArcGIS for Desktop o en cualquier IDE de Python, como PythonWin o WING, en un equipo en el que se haya instalado ArcGIS for Desktop (Standard o Advanced), ArcGIS for Server (Standard o Advanced) o ArcGIS Engine con la extensión Geodatabase Update.
Esta secuencia de comandos de ejemplo habilita la funcionalidad de geodatabase en una base de datos Informix existente:
""" Name: enable_enterprise_gdb.py Description: Provide connection information to an enterprise database and enable enterprise geodatabase. Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage Author: Esri """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") 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 ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file") # 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 database_type = options.Database_type.upper() instance = options.Instance account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() license = options.Authorization_file if( database_type ==""): print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.") parser.print_help() sys.exit(3) if (license == ""): print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enabling enterprise geodatabase functionality requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license." sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + 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 = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print "\nCreating Database Connection File...\n" # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE") 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: Enable geodatabase... try: print "Enabling Enterprise Geodatabase...\n" arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #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)
- Altere la secuencia de comando para incluir la información específica a su sitio.
- Ejecute la secuencia de comandos que copió y que modificó.
Un archivo de registro para la creación de geodatabase (GDBCreateGeodatabase<#>.log) se escribe en el directorio especificado para la variable TEMP o TMP en el equipo en el que se ejecuta la secuencia de comandos.