As Joshua Bixby states, using a wildcard for the fields is a bad idea. In your case, you cannot be sure the order you are assembling the row matches the order the data was selected. Also, for testing you should avoid a try/except block so the error messages will be clear and you can see what exceptions you may need to guard against.
Can we assume that the field names are identical (as well as field type and length) between the source and target features? If so, you might test the following with copies of your data:
fSource = '' # some source
fTarget = '' # the target
fields = ['SHAPE@', 'Country', 'Product', 'CNSTR_YEAR'] # assuming same name used in both target/source
with with arcpy.da.InsertCursor(fTarget, fields) as insertCursor:
with arcpy.da.SearchCursor(fSource, fields) as cursor:
for row in cursor:
insertCursor.insertRow(row)