I'm guessing you could use a 'simple' python script to do this update but it would be no-turning-back sort of deal (no undo button).
Maybe something like this (and I'm sure there's a way to make this more efficient.. I'm just not the most python savvy)
import arcpy
from time import strftime
print 'Start Script: ' + strftime('%Y-%m-%d %H:%M:%S')
workspace = 'C:/Users/Name/Documents/GISData.gdb'
fc = 'FeatureClassName'
tbl = 'C:/Users/Name/Documents/TableName.csv'
arcpy.env.workspace = workspace
fieldsFC = ['Field1', 'Field2', 'Field3',
'Field4', 'Field5', 'Field6',
'Field7', 'Field8',
'Field9', 'Field10']
fcrow = ['','','','','','','','','','']
tblrow = ['','','','','','','','','','']
counter = 0
try:
with arcpy.da.SearchCursor(tbl, fieldsFC) as tblCursor:
for tblrow in tblCursor:
with arcpy.da.UpdateCursor(fc, fieldsFC) as fcCursor:
fcrow = ['','','','','','','','','','']
for fcrow in fcCursor:
if (str(tblrow[0]) == str(fcrow[0])
and str(tblrow[3]) == str(fcrow[3])):
fcrow[1] = tblrow[1]
fcrow[2] = tblrow[2]
fcrow[4] = tblrow[4]
fcrow[5] = tblrow[5]
fcrow[6] = tblrow[6]
fcrow[7] = tblrow[7]
fcrow[8] = tblrow[8]
fcrow[9] = tblrow[9]
print('Row number ' + str(fcrow[0]) + ' was updated.')
fcCursor.updateRow(fcrow)
counter = counter + 1
continue
except Exception:
e =sys.exc_info()[1]
print(e.args[0])
arcpy.AddError(e.args[0])
except arcpy.ExcecuteError:
print(arcpy.GetMessages(2))
print 'Updated ' + str(counter) + ' rows.'
print 'Finshed Script: ' + strftime('%Y-%m-%d %H:%M:%S')