Hello, first thanks for sharing this valuable information
I have noticed at least for Spain admin codes from postalcode dump don't match with those from main geonames dump.
Example:
For admin1 'Castilla y León' in main geonames it's referenced by code '55' and in postalcode by 'CL' so it's very difficult given a postalcode to look for its corresponding admin1 geoname row.
Beside that, the textual form in postcode dump for Castilla y León is 'Castilla - Leon' which doesn't appear as an alternatename in the main geonames data.
I don't know if this is a problem of your data or just the dump, because the webpage finds correctly all admins from postalcode.
I could fix all this for Spain postalcodes by hand if neccesary. Do you want a list of SQL UPDATE statements to apply them to your data?
Ex: UPDATE postalcodes SET code1='55' WHERE country='ES' AND code1='CL';
The GeoNames main table is using FIPS codes for first order administrative divisions (with some exceptions : US, UK, CH) whereas the postal code dump is using ISO codes for many countries. The codes are listed here :
http://www.geonames.org/ES/administrative-division-spain.html
The idea is to integrate the postal codes into the main dump and get rid of the separate dump and we also want to switch the admin1code to ISO.