[OPEN-ILS-DEV] alternative to quick_metarecord_map.sql

Dan Scott denials at gmail.com
Fri Jun 20 16:32:24 EDT 2008


2008/6/20 Bill Ott <bott at grpl.org>:
> Last question of the week:
>
> If importing a small batch of records into a database with a few hundred
> thousand existing records, is there a good alternative to running
> quick_metarecord_map.sql?    ...it can get a bit time consuming.

Untested, but theoretically running the two INSERT statements within a
transaction limiting to the biblio.record_entry IDs (WHERE id >
somenumber) rather than rebuilding the whole thing from scratch would
avoid the full overhead:

BEGIN;

INSERT INTO metabib.metarecord (fingerprint,master_record)
	SELECT	fingerprint,id
	  FROM	(SELECT	DISTINCT ON (fingerprint)
	  		fingerprint, id, quality
		  FROM	biblio.record_entry
		  WHERE id > somenumber
		  ORDER BY fingerprint, quality desc) AS x
	  WHERE	fingerprint IS NOT NULL;

INSERT INTO metabib.metarecord_source_map (metarecord,source)
	SELECT	m.id, b.id
	  FROM	biblio.record_entry b
	  	JOIN metabib.metarecord m ON (m.fingerprint = b.fingerprint)
	  WHERE b.id > somenumber;

COMMIT;

Alternately, Jason just pointed me to the (slightly different) version
of this same idea at the very bottom of
http://open-ils.org/dokuwiki/doku.php?id=scratchpad:random_magic_spells
- it's more likely that that's tested, and the AND NOT EXISTS clause,
upon reflection, is an intelligent addition :)

One more update: Mike states that the "magic spell" has been used many
times. So go with that.



-- 
Dan Scott
Laurentian University


More information about the Open-ils-dev mailing list