Summary
Creates a match table to be used with the Add Attachments and Remove Attachments tools.
Learn more about working with the Attachments geoprocessing tools
Usage
This tool will go through each row for the input target dataset and compare the Key Field in this dataset to the names of files in the Input Folder. For each match that occurs, a record will be created in the output table that contains the ObjectID value from the Input Dataset and the name of the matched file (or optionally the full path to that file). When used in the Add Attachments and Remove Attachments tools the MATCHID field is used as the key field to link the files on disk to records in the input dataset.
If the Output Match Table location is a folder, the output can be created as a dBASE table by specifying a name with the extension .dbf, or can be created as an INFO table by specifying a name with no extension. If the output location is a geodatabase, the match table will be a geodatabase table (do not specify an extension).
Syntax
arcpy.management.GenerateAttachmentMatchTable(in_dataset, in_folder, out_match_table, in_key_field, {in_file_filter}, {in_use_relative_paths})
Parameter | Explanation | Data Type |
in_dataset | Input dataset that contains records that will have files attached. | Table View |
in_folder | Folder that contains files to attach. | Folder |
out_match_table | Table that will be generated which contains two columns: MATCHID and FILENAME. | Table |
in_key_field | The values in this field will match the names of the files in the input folder. The matching behavior will ignore file extensions, which allows multiple files with various file extensions to match with a single record in the input dataset. For example, if the input Key Field value is lot5986, a file on disk named lot5986.jpg would match with this record. | Field |
in_file_filter (Optional) | This parameter is used to limit the files the tool considers for matching. If the file name does not meet the criteria in the file filter parameter it will not be processed and therefore will not show up in the output match table. Wild cards (*) can be used in this parameter for more flexible filtering options. Multiple semicolon-delimited filters can be used as well. For example, consider a directory that contains the following files: parcel.tif, parcel.doc, parcel.jpg, houses.jpg, and report.pdf. To limit the possible matches in this list to .jpg files, use *.jpg. To limit the possible matches in this list to .pdf and .doc files, use *.pdf; *.doc. To limit the possible matches in this list to files beginning with parcel, use parcel*. To limit the possible matches in this list to files that contain the text arc, use *arc*. | String |
in_use_relative_paths (Optional) | Determines if the output match table field FILENAME will contain a full path to the dataset or only the file name.
| Boolean |
Code sample
The following code snippet demonstrates how to use the GenerateAttachmentMatchTable in the Python window.
import arcpy
arcpy.GenerateAttachmentMatchTable_management("C:/data/parcels.gdb/parcels",
"C:/attachment_folder",
"C:/data/temp.gdb/matchtable",
"AttachmentKeyField",
"*.jpg; *.pdf",
"ABSOLUTE")
The following stand-alone script demonstrates how to use the GenerateAttachmentMatchTable tool to create a match table that contains matches for only JPG and PDF files.
# Name: GenerateAttachmentMatchTable_Example.py
# Description: Creates an attachment match table for all files that contain the string
# 'property' and are of type 'jpg' while looping through multiple folders.
# Import system modules
import arcpy, os
# Set local variables.
rootFolder = 'c:/work/'
for folder in os.walk(rootFolder):
if folder[0].find('.gdb') == -1: #exclude file geodatabases from the folder list.
arcpy.GenerateAttachmentMatchTable_management("C:/data/parcels.gdb/parcels",
folder[0],
"C:/data/temp.gdb/matchtable",
"AttachmentKeyField",
"*property*.jpg",
"RELATIVE")
Environments
Licensing information
- Basic: No
- Standard: Yes
- Advanced: Yes