SCPL: bib cleanup script
authorGalen Charlton <gmc@esilibrary.com>
Tue, 30 Oct 2012 21:41:09 +0000 (17:41 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Tue, 30 Oct 2012 21:41:09 +0000 (17:41 -0400)
Make sure that all bibs have a valid 901 field, as Tpac
will refuse to display a bib that doesn't have one.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>

Open-ILS/src/sql/Pg/version-upgrade/scpl_bib_cleanup.sql [new file with mode: 0644]

diff --git a/Open-ILS/src/sql/Pg/version-upgrade/scpl_bib_cleanup.sql b/Open-ILS/src/sql/Pg/version-upgrade/scpl_bib_cleanup.sql
new file mode 100644 (file)
index 0000000..f1b439e
--- /dev/null
@@ -0,0 +1,8 @@
+CREATE TEMPORARY TABLE bibs_to_fix AS 
+SELECT id 
+FROM biblio.record_entry
+WHERE (XPATH('//marc:datafield[@tag="901"][1]/marc:subfield[@code="c"]/text()', marc::XML, ARRAY[ARRAY['marc', 'http://www.loc.gov/MARC21/slim']]))[1]::TEXT IS NULL
+OR    (XPATH('//marc:datafield[@tag="901"][1]/marc:subfield[@code="c"]/text()', marc::XML, ARRAY[ARRAY['marc', 'http://www.loc.gov/MARC21/slim']]))[1]::TEXT <> id::TEXT;
+
+UPDATE biblio.record_entry SET id = id WHERE id IN (SELECT id FROM bibs_to_fix);
+