Informix の ArcSDE ジオデータベースをアップグレードするスクリプトの作成
このトピックで説明する Python スクリプトを変更して使用することで、ArcSDE ジオデータベースに接続してアップグレードを実行できます。
1 つ目のスクリプトは既存の ArcSDE 接続ファイルを使用して、ジオデータベースに接続しアップグレードします。
2 つ目のスクリプトでは、ジオデータベースのアップグレードに使用する同じスクリプトに、接続情報を指定する方法を示します。これは特に ArcGIS Desktop にアクセスできない場合に有効で、ArcGIS Engine または ArcGIS Server Enterprise(Standard または Advanced)がインストールされているコンピュータから Python スクリプトを実行して、接続情報を指定し、ジオデータベースをアップグレードすることができます。
既存の ArcSDE 接続ファイルを使用する場合と、スクリプトにパラメータを指定する場合のどちらでも、ジオデータベースに対してダイレクト コネクションを確立します。したがって、スクリプトを実行するコンピュータに IBM Informix クライアントをインストールして設定する必要があります。
アップグレードを行う前に、「Informix のジオデータベースをアップグレードする準備」の手順を実行していることを確認します。
手順:
- Copy one of these example scripts to the Python window in ArcGIS Desktop, or to any Python IDE such as PythonWin or WING. Alter any variable values to match the information at your site.
- ダイレクト コネクションを使用する ArcSDE 接続ファイルがすでにあり、ArcSDE 管理者として接続する場合は、使用しているオペレーティング システムに応じて、次のスクリプトのいずれかをコピーして変更します。
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing ArcSDE connection file # and upgrade an ArcSDE for Informix 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", "UPGRADE")
# Name: upgradesdegdb_example.py # Description: Connect from a Linux or UNIX computer # with an existing ArcSDE connection file # and upgrade an ArcSDE for Informix 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")
- アップグレード用のスクリプトを作成しているコンピュータに ArcSDE 接続ファイルがない場合は、次のスクリプトをコピーして変更できます。
""" 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)
- ダイレクト コネクションを使用する ArcSDE 接続ファイルがすでにあり、ArcSDE 管理者として接続する場合は、使用しているオペレーティング システムに応じて、次のスクリプトのいずれかをコピーして変更します。
- コピーして変更したスクリプトを実行し、前提条件のチェックを行い、ジオデータベースをアップグレードします。
Python の使用方法については、「Python スクリプトの作成」をご参照ください。
関連項目
7/10/2012