Use x_tractor with relevant fields as in spreadsheet to get csv files. Run scripts as follows to match: Get each site's records into a table and run queries to ensure the 035 is always the control number field by swapping field content if need be. Get all records into single table source (from each site) Run match022s for ISSN Run matchoclc for OCLC number Run normalize245s.php Run match245sv2.php to get exact normalized title matches into table matches245. This works from smallsource and flags matches as found_match = 1 Run select * from matches245 group by targetid to get rid of duplicate clusters Run add245s.php to add the matched clusters to the bib and holdings table. From smallsource, for all found_match = 0 records (must be unique), add them back into main tables. Script = adduniques.php Run following to fill in null match_basis flags in holdings table: update matches_holdings set match_basis = 'TITLE' where length(match_basis) < 2