Realizar tabla de consultas (Administración de datos)

Resumen

Esta herramienta aplica una consulta SQL a una base de datos y los resultados se representan en una capa o vista de tabla. La consulta se puede utilizar para unir varias tablas o para devolver un subconjunto de columnas o filas desde los datos originales de la base de datos.

Esta herramienta acepta datos de una geodatabase de ArcSDE, una geodatabase de archivos, una geodatabase personal o una conexión OLE DB.

Uso

Sintaxis

MakeQueryTable_management (in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
ParámetroExplicaciónTipo de datos
in_table
[in_table,...]

Nombre de la tabla o tablas que se utilizarán en la consulta. Si se enumeran varias tablas, el parámetro Expresión se puede utilizar para definir cómo se deberán unir.

La tabla de entrada puede provenir de una geodatabase de ArcSDE, una geodatabase de archivos, una geodatabase personal o una conexión OLE DB.

Table View; Raster Layer
out_table

Nombre de la vista de tabla o capa que será creado por la herramienta.

Table View;Raster Layer
in_key_field_option

Indica cómo se generará un campo de ObjectID, de hacerlo, para la consulta. El valor predeterminado es USE_KEY_FIELDS.

  • USE_KEY_FIELDSEsto indica que los campos elegidos en la lista de campos clave se deberán utilizar para definir la columna de ObjectID dinámica. Si no hay campos elegidos en la lista de campos clave, se aplica automáticamente la opción ADD_VIRTUAL_KEY_FIELD.
  • ADD_VIRTUAL_KEY_FIELDEsta opción indica que no se han elegido campos clave, pero que se generará una columna de ObjectID dinámica. Esto se realiza copiando los datos a un espacio de trabajo local, administrado por el sistema, y agregando a la copia un campo con valores únicos. A continuación, la vista de tabla o capa puede acceder a la copia y utilizar el campo agregado como campo clave.
  • NO_KEY_FIELDEsta opción indica que no se generará una columna de ObjectID dinámica. Elegir esta opción significa que no se admitirán selecciones para la vista de tabla. Si ya existe una columna de tipo ObjectID en la lista de campos, se utilizará como el Id. de objeto incluso si se elige esta opción.
String
in_key_field
[in_key_field,...]
(Opcional)

Especifica un campo o una combinación de campos que se pueden utilizar para identificar una fila de la consulta como única. Este parámetro se utiliza sólo cuando se encuentra establecida la opción USE_KEY_FIELDS.

El botón Agregar campo, que se utiliza sólo en ModelBuilder, le permite agregar los campos esperados para que pueda completar el cuadro de diálogo y continuar creando el modelo.

Field
in_field
[[Field, {Alias}],...,...]
(Opcional)

Campos que se incluirán en la vista de tabla o capa. Si se establece un alias para un campo, este es el nombre que aparece. Si no se especifican campos, se incluyen todos los campos de todas las tablas.

Value Table
where_clause
(Opcional)

Una expresión SQL utilizada para seleccionar un subconjunto de registros. La sintaxis para la expresión difiere levemente según la fuente de datos. Por ejemplo, si está consultando shapefiles, coberturas, tablas de dBASE o INFO, o geodatabases de archivos o de ArcSDE, encierre los nombres de campo con comillas dobles:

"MY_FIELD"

Si está consultando geodatabases personales, encierre los campos en corchetes:

[MY_FIELD]

En Python, las cadenas de caracteres están encerradas con comillas simples o dobles. Para crear una cadena de caracteres que consta de comillas (como es común con una cláusula WHERE en las expresiones SQL), puede separar las comillas (usando una barra invertida) o poner comillas triples en la cadena de caracteres. Por ejemplo, si la cláusula WHERE propuesta es

"CITY_NAME" = 'Chicago'

podría encerrar toda la cadena de caracteres entre comillas dobles y después separar las comillas dobles interiores de esta manera:

" \"CITY_NAME\" = 'Chicago' "

O podría encerrar toda la cadena de caracteres entre comillas simples y después separar las comillas simples interiores de esta manera:

' "CITY_NAME" = \'Chicago\' '

O puede encerrar toda la cadena de caracteres entre comillas triples sin separar:

""" "CITY_NAME" = 'Chicago' """

Para obtener más información sobre la sintaxis de SQL y cómo difiere entre las fuentes de datos, consulte el tema de ayuda Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.

SQL Expression

Ejemplo de código

Ejemplo de MakeQueryTable (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python demuestra cómo utilizar la función MakeQueryTable en el modo inmediato.

import arcpy from arcpy import env env.workspace = "C:/data/data.gdb" arcpy.MakeQueryTable_management (["Counties","codemog"], "queryout","ADD_VIRTUAL_KEY_FIELD", "",                    [["Counties.OBJECTID", 'ObjectID'],["Counties.NAME", 'Name'],                     ["codemog.Males", 'Males'], ["codemog.Females", 'Females']],                    "Counties.FIPS = codemog.Fips and Counties.STATE_NAME = 'California'")
Ejemplo 2 de MakeQueryTable (secuencia de comandos independiente)

La siguiente secuencia de comandos es un ejemplo de cómo utilizar la herramienta MakeQueryTable en el entorno de secuencias de comandos de Python.

# MakeQueryTableOLEDB.py # Description: Create a query table from two OLE DB tables using a limited set of #               fields and establishing an equal join. # Author: ESRI   # Import system modules import arcpy   try:     # Local variables...     tableList = ["Database Connections/balrog.odc/vtest.COUNTIES",\                  "Database Connections/balrog.odc/vtest.CODEMOG"]          fieldList = [["vtest.COUNTIES.OBJECTID", 'ObjectID'],["vtest.COUNTIES.NAME", 'Name']\                  ["vtest.CODEMOG.Males", 'Males'],["vtest.CODEMOG.Females", 'Females']]     whereClause = "vtest.COUNTIES.FIPS = vtest.CODEMOG.Fips" +\                   "and vtest.COUNTIES.STATE_NAME = 'California'"     keyField = "vtest.COUNTIES.OBJECTID"     lyrName = "CountyCombined"     # Make Query Table...     arcpy.MakeQueryTable_management(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)       # Print the total rows     print arcpy.GetCount_management(lyrName)       # Print the fields     Fields = arcpy.ListFields(lyrName)     for field in Fields:         print Field.name                # Save as a dBASE file     arcpy.CopyRows_management(lyrName, "C:/temp/calinfo.dbf")   except Exception, e:     # If an error occurred, print line number and error message     import traceback, sys     tb = sys.exc_info()[2]     print "Line %i" % tb.tb_lineno     print e.message

Entornos

Temas relacionados

9/11/2013