Estoy trabajando en un script que toma varios resultados de tablas de la herramienta Estadísticas Zonales como Tabla y los fusiona en una sola tabla. Al fusionarlos me encuentro con el problema de que los archivos .dbf exportados tienen longitudes diferentes para un campo que necesito, "UID". La fusión toma la primera tabla añadida y utiliza esta longitud como la máxima para el campo "UID" fusionado.
¿Cómo sería la sintaxis para conseguirlo?
Este es mi código:
arcpy.Merge_management(listTable5M,outTable+"\\"+"5M_zonal_statistics_elevation_merged.dbf","UID \"UID\" true true false 25 Text 0 0,first,#")
¿Es necesario utilizar el objeto FieldMappings()?
La primera respuesta tiene mucho sentido. Sin embargo, sigo sin obtener el resultado deseado.
La fusión sigue arrojando un error. Aquí está su código implementado en el script:
dbf_list_5m = arcpy.ListTables() arcpy.AddMessage(dbf_list_5m) max_UID_length = 0 field_mappings = arcpy.FieldMappings() for table in dbf_list_5m: fields = arcpy.ListFields(table) arcpy.AddMessage(table) for field in fields: if field.name == "UID": if field.length > max_UID_length: max_UID_length = field.length arcpy.AddMessage(max_UID_length) field_mappings.removeAll() field_map = arcpy.FieldMap() field_map.addInputField(table, field.name) field_mappings.addFieldMap(field_map) arcpy.Merge_management(dbf_list_5m,outTable1+"\\"+"5M_zonal_statistics_elevation_merged.dbf", field_mappings)
Obtiene el max_UID_length (17 en este caso) pero sigue fallando durante la fusión. Puedo fusionar con éxito utilizando la herramienta gp si cambio la longitud manualmente (o añado primero la tabla con el campo 'UID' de 17 caracteres de longitud).