# Import arcpy module import arcpy arcpy.env.workspace = "G:\ChrisGIS\WDFW_NWIFC_EVENT_17100101.gdb" arcpy.env.overwriteOutput = "True" def GetFieldMappings(inputFC, targetFC, dico): field_mappings = arcpy.FieldMappings() field_mappings.addTable(inputFC) for input, output in dico.iteritems(): field_map = arcpy.FieldMap() field_map.addInputField(inputFC, input) field = field_map.outputField field.name = output field_map.outputField = field field_mappings.addFieldMap(field_map) del field, field_map return field_mappings #Variables inputFC = "WDFW_CHFA_2HEM_evt_1" targetFC = "WDFW_CHFA_2HEM_evt_olay_1" dico = {'Permanent_Identifier': 'Permanent_ID', 'STRM_NAME': 'LLID_STRM_NAME', 'DATE_SRVY': 'SOURCE_DATE', 'SPPCODE': 'SPECRCODE', 'SRC_AGENCY': 'SOURCE_AGENCY', 'SRC_WHO': 'SOURCE_WHO'} Mapper = GetFieldMappings(inputFC, targetFC, dico) # Process: Append arcpy.Append_management(arcpy.env.workspace+"\\"+inputFC, arcpy.env.workspace+"\\"+targetFC,"NO_TEST",Mapper)
Solved! Go to Solution.
# Import arcpy module import arcpy arcpy.env.overwriteOutput = True from os import path as p def GetFieldMappings(inputFC, targetFC, dico): field_mappings = arcpy.FieldMappings() field_mappings.addTable(inputFC) for input, output in dico.iteritems(): field_map = arcpy.FieldMap() field_map.addInputField(inputFC, input) field = field_map.outputField field.name = output field_map.outputField = field field_mappings.addFieldMap(field_map) del field, field_map return field_mappings #Variables dico = {'Permanent_Identifier': 'Permanent_ID', 'STRM_NAME': 'LLID_STRM_NAME', 'DATE_SRVY': 'SOURCE_DATE', 'SPPCODE': 'SPECRCODE', 'SRC_AGENCY': 'SOURCE_AGENCY', 'SRC_WHO': 'SOURCE_WHO'} arcpy.env.workspace = r"G:\ChrisGIS\COMBO_fishdist_events" for ws in arcpy.ListWorkspaces("*", "FileGDB"): listFCS = arcpy.ListTables("WDFW*evt") arcpy.env.workspace = ws for inputFC in listFCS: outTab = r'in_memory\%s_2' %inputFC targetFC = inputFC +"_olay" Mapper = GetFieldMappings(inputFC, targetFC, dico) # Process: Append arcpy.CreateTable_management(ws, outTab) arcpy.Merge_management([p.join(ws,inputFC),outTab],p.join(ws,targetFC),Mapper) print 'Appended "{0}" to "{1}" in {2}'.format(inputFC, targetFC, p.basename(ws))
# Import arcpy module import arcpy arcpy.env.overwriteOutput = True from os import path as p def GetFieldMappings(fc_in, fc_out, dico): field_mappings = arcpy.FieldMappings() field_mappings.addTable(fc_in) for input, output in dico.iteritems(): field_map = arcpy.FieldMap() field_map.addInputField(fc_in, input) field = field_map.outputField # Missing underscore field.name = output field_map.outputField = field field_mappings.addFieldMap(field_map) del field, field_map return field_mappings #Variables dico = {'Permanent_Identifier': 'Permanent_ID', 'STRM_NAME':'LLID_STRM_NAME', 'DATE_SRVY': 'SOURCE_DATE', 'SPPCODE': 'SPECRCODE', 'SRC_AGENCY': 'SOURCE_AGENCY', 'SRC_WHO': 'SOURCE_WHO'} template = r'C:\gdblooptest\template\template.gdb\Template_table' ##arcpy.env.workspace = r"G:\ChrisGIS\COMBO_fishdist_events" for ws in arcpy.ListWorkspaces("*", "FileGDB"): arcpy.env.workspace = ws listFCS = arcpy.ListTables() for inputFC in listFCS: targetFC = inputFC +"_olay" # Process: Append arcpy.CreateTable_management(ws, targetFC, template) Mapper = GetFieldMappings(inputFC, targetFC, dico) arcpy.Append_management(inputFC,targetFC,'NO_TEST',Mapper) print 'Appended "{0}" to "{1}" in {2}'.format(inputFC, targetFC, p.basename(ws))
# Import arcpy module import arcpy, sys, traceback arcpy.env.overwriteOutput = True from os import path as p def GetFieldMappings(fc_in, fc_out, dico): field_mappings = arcpy.FieldMappings() field_mappings.addTable(fc_in) for input, output in dico.iteritems(): field_map = arcpy.FieldMap() field_map.addInputField(fc_in, input) field = field_map.outputField field.name = output field_map.outputField = field field_mappings.addFieldMap(field_map) del field, field_map return field_mappings #Variables dico = {'Permanent_Identifier': 'Permanent_ID', 'STRM_NAME':'LLID_STRM_NAME', 'DATE_SRVY': 'SOURCE_DATE', 'SPPCODE': 'SPECRCODE', 'SRC_AGENCY': 'SOURCE_AGENCY', 'SRC_WHO': 'SOURCE_WHO'} template = r'C:\gdblooptest\template\template.gdb\Template_table' arcpy.env.workspace = r"G:\ChrisGIS\COMBO_fishdist_events" for ws in arcpy.ListWorkspaces("*", "FileGDB"): arcpy.env.workspace = ws listFCS = arcpy.ListTables() for inputFC in listFCS: if not inputFC.endswith('_olay'): targetFC = inputFC +"_olay" # Process: Append if arcpy.Exists(targetFC): arcpy.Delete_management(targetFC) print 'deleted %s' %targetFC arcpy.CreateTable_management(ws, targetFC, template) Mapper = GetFieldMappings(inputFC, targetFC, dico) arcpy.Append_management(inputFC,targetFC,'NO_TEST',Mapper) print 'Appended "{0}" to "{1}" in {2}'.format(inputFC, targetFC, p.basename(ws)) print 'done'
...
So, I could not solve this issue. I decided to remove that gdb from my workspace (temporarily) and try to run the script on what remained in the workspace. Well that failed as well with the resulting error :
Runtime error <class 'arcgisscripting.ExecuteError'>: ERROR 000278: Failed on input OID 1, could not write value â?? â?? to output field SOURCE_DATE Failed to execute (Append).