Commit | Line | Data |
---|---|---|
a54b8f42 RJ |
1 | #!/bin/bash |
2 | ||
e38e56a8 | 3 | DIR=$(readlink -f $(dirname $0)) |
a54b8f42 RJ |
4 | #cd /srv/openils/bin |
5 | ||
6 | PGUSER=evergreen | |
7 | PGHOST=db1.sitka.bclibraries.ca | |
8 | PSQL="psql -A -t -U $PGUSER -h $PGHOST" | |
9 | DATABASE=evergreen | |
10 | #FULL_QUERY="select distinct id from biblio.record_entry where not deleted" | |
11 | FULL_QUERY="select distinct acn.record FROM asset.call_number acn join biblio.record_entry bre on (acn.record = bre.id) where not bre.deleted and bre.active and not acn.deleted" | |
12 | POSTSEC_QUERY="select distinct record FROM asset.call_number where owning_lib in (select distinct id from actor.org_unit_descendants(27)) and not deleted and label != '##URI##';" | |
77d28950 | 13 | NONEXPORTED_QUERY="select distinct acn.record FROM asset.call_number acn join biblio.record_entry bre on (acn.record = bre.id) where bre.deleted or not bre.active or acn.deleted" |
1649d461 | 14 | MARC_PARAMS="--config /srv/openils/conf/opensrf_core.xml --items --location SITKA --collapse_to_depth 2 --timeout 300 --force901 --encoding UTF-8 --onlyholdings --quiet" |
a54b8f42 | 15 | MARC_EXPORT_BIN="${DIR}/marc_export_custom" |
e5fb4602 RJ |
16 | # this lets us inject perl opts |
17 | MARC_EXPORT="perl ${PERLOPT} -- ${MARC_EXPORT_BIN} ${MARC_PARAMS}" | |
a54b8f42 | 18 | |
a54b8f42 RJ |
19 | [ -z "${T}" ] && T=$(date -u +%Y%m%dT%H%M%SZ) |
20 | [ -z "${OUTDIR}" ] && OUTDIR=$(mktemp --tmpdir -d outlook_export.XXXXXXX) | |
21 | ||
22 | process_batch() { | |
77d28950 RJ |
23 | local f="$1" sql="$2" split_count="$3" |
24 | if [ ! -f ${OUTDIR}/${f}-${T}.id ]; then | |
a54b8f42 | 25 | echo "Getting IDs" |
77d28950 | 26 | $PSQL -c "$sql" $DATABASE | sort | uniq >${OUTDIR}/${f}-${T}.id |
a54b8f42 | 27 | fi |
77d28950 | 28 | if [ ! -f ${OUTDIR}/${f}.id.targets ]; then |
a54b8f42 | 29 | echo "Splitting work" |
77d28950 | 30 | split_suffix ${OUTDIR}/${f}-${T}.id ${OUTDIR}/${f}-${T}-split. .id $split_count |
a54b8f42 | 31 | echo "Making targets" |
77d28950 | 32 | find ${OUTDIR} -name "${f}-${T}-split.[0-9]*[0-9].id" \ |
a54b8f42 | 33 | | sed 's,.id$,.marc,g' \ |
77d28950 | 34 | >${OUTDIR}/${f}.id.targets |
a54b8f42 RJ |
35 | fi |
36 | ||
37 | make ${MAKEOPTS} -f Makefile-marc_export \ | |
38 | MARC_EXPORT_BIN="${MARC_EXPORT_BIN}" \ | |
77d28950 RJ |
39 | MARC_PARAMS="$MARC_PARAMS --exclusion_ini ${f}.ini" \ |
40 | $(<${OUTDIR}/${f}.id.targets) | |
368b2926 | 41 | make_rc=$? |
a54b8f42 | 42 | |
77d28950 | 43 | find ${OUTDIR} -name "${f}-${T}-split*.marc" \ |
a54b8f42 | 44 | -exec cat \{} \; \ |
77d28950 | 45 | >${OUTDIR}/${f}-${T}.marc |
368b2926 | 46 | return $make_rc |
a54b8f42 RJ |
47 | } |
48 | ||
49 | split_suffix() { | |
77d28950 RJ |
50 | local input="$1" output_prefix="$2" output_suffix="$3" split_count="$4" |
51 | split -a 7 -d -C ${split_count} ${input} ${output_prefix} | |
52 | find $(dirname ${output_prefix}) -name "$(basename ${output_prefix})*" -exec mv -f \{\} \{\}${output_suffix} \; | |
a54b8f42 RJ |
53 | } |
54 | ||
a54b8f42 | 55 | # media for BC ELN post-secondary libraries |
77d28950 | 56 | export SPLIT_COUNT=10000 |
a54b8f42 | 57 | F=bc_eln_media SQL="$POSTSEC_QUERY" |
77d28950 | 58 | process_batch "$F" "${SQL}" $SPLIT_COUNT |
368b2926 | 59 | rc1=$? |
a54b8f42 RJ |
60 | |
61 | # serials for BC ELN post-secondary libraries | |
77d28950 | 62 | export SPLIT_COUNT=10000 |
a54b8f42 | 63 | F=bc_eln_serials SQL="$POSTSEC_QUERY" |
77d28950 | 64 | process_batch "$F" "${SQL}" $SPLIT_COUNT |
368b2926 | 65 | rc2=$? |
6f7b4d95 | 66 | |
77d28950 | 67 | export SPLIT_COUNT=100000 |
6f7b4d95 RJ |
68 | # full dump for outlook public libraries |
69 | F=sitka_full_outlook SQL="$FULL_QUERY" | |
77d28950 | 70 | process_batch "$F" "${SQL}" $SPLIT_COUNT |
368b2926 RJ |
71 | rc3=$? |
72 | ||
73 | rc=$(($rc1+$rc2+$rc3)) | |
74 | exit $rc |