]> git.evergreen-ils.org Git - Evergreen.git/blob - docs-antora/modules/development/pages/support_scripts.adoc
LP#1848524: Docs: section fixes
[Evergreen.git] / docs-antora / modules / development / pages / support_scripts.adoc
1 = Support Scripts =
2 :toc:
3
4 Various scripts are included with Evergreen in the `/openils/bin/` directory
5 (and in the source code in `Open-ILS/src/support-scripts` and
6 `Open-ILS/src/extras`). Some of them are used during
7 the installation process, such as `eg_db_config`, while others are usually
8 run as cron jobs for routine maintenance, such as `fine_generator.pl` and
9 `hold_targeter.pl`. Others are useful for less frequent needs, such as the
10 scripts for importing/exporting MARC records. You may explore these scripts
11 and adapt them for your local needs. You are also welcome to share your
12 improvements or ask any questions on the
13 http://evergreen-ils.org/communicate/[Evergreen IRC channel or email lists].
14
15 Here is a summary of the most commonly used scripts. The script name links
16 to more thorough documentation, if available.
17
18  * action_trigger_aggregator.pl
19    -- Groups together event output for already processed events.  Useful for
20       creating files that contain data from a group of events.  Such as a CSV
21       file with all the overdue data for one day.
22  * xref:admin:actiontriggers_process.adoc#processing_action_triggers[action_trigger_runner.pl]
23    -- Useful for creating events for specified hooks and running pending events
24  * authority_authority_linker.pl
25    -- Links reference headings in authority records to main entry headings
26       in other authority records. Should be run at least once a day (only for
27           changed records).
28  * xref:#authority_control_fields[authority_control_fields.pl]
29    -- Links bibliographic records to the best matching authority record.
30       Should be run at least once a day (only for changed records).
31       You can accomplish this by running _authority_control_fields.pl --days-back=1_
32  * autogen.sh
33    -- Generates web files used by the OPAC, especially files related to
34       organization unit hierarchy, fieldmapper IDL, locales selection,
35       facet definitions, compressed JS files and related cache key
36  * clark-kent.pl
37    -- Used to start and stop the reporter (which runs scheduled reports)
38  * xref:installation:server_installation.adoc#creating_the_evergreen_database[eg_db_config]
39    -- Creates database and schema, updates config files, sets Evergreen
40       administrator username and password
41  * fine_generator.pl
42  * hold_targeter.pl
43  * xref:#importing_authority_records_from_command_line[marc2are.pl]
44    -- Converts authority records from MARC format to Evergreen objects
45       suitable for importing via pg_loader.pl (or parallel_pg_loader.pl)
46  * marc2bre.pl
47    -- Converts bibliographic records from MARC format to Evergreen objects
48       suitable for importing via pg_loader.pl (or parallel_pg_loader.pl)
49  * marc2sre.pl
50    -- Converts serial records from MARC format to Evergreen objects
51       suitable for importing via pg_loader.pl (or parallel_pg_loader.pl)
52  * xref:#marc_export[marc_export]
53    -- Exports authority, bibliographic, and serial holdings records into
54       any of these formats: USMARC, UNIMARC, XML, BRE, ARE
55  * osrf_control
56    -- Used to start, stop and send signals to OpenSRF services
57  * parallel_pg_loader.pl
58    -- Uses the output of marc2bre.pl (or similar tools) to generate the SQL
59       for importing records into Evergreen in a parallel fashion
60
61 [#authority_control_fields]
62
63 == authority_control_fields: Connecting Bibliographic and Authority records ==
64
65 indexterm:[authority control]
66
67 This script matches headings in bibliographic records to the appropriate
68 authority records. When it finds a match, it will add a subfield 0 to the 
69 matching bibliographic field.
70
71 Here is how the matching works:
72
73 [options="header",cols="1,1,3"]
74 |=========================================================
75 |Bibliographic field|Authority field it matches|Subfields that it examines
76
77 |100|100|a,b,c,d,f,g,j,k,l,n,p,q,t,u
78 |110|110|a,b,c,d,f,g,k,l,n,p,t,u
79 |111|111|a,c,d,e,f,g,j,k,l,n,p,q,t,u
80 |130|130|a,d,f,g,h,k,l,m,n,o,p,r,s,t
81 |600|100|a,b,c,d,f,g,h,j,k,l,m,n,o,p,q,r,s,t,v,x,y,z
82 |610|110|a,b,c,d,f,g,h,k,l,m,n,o,p,r,s,t,v,w,x,y,z
83 |611|111|a,c,d,e,f,g,h,j,k,l,n,p,q,s,t,v,x,y,z
84 |630|130|a,d,f,g,h,k,l,m,n,o,p,r,s,t,v,x,y,z
85 |648|148|a,v,x,y,z
86 |650|150|a,b,v,x,y,z
87 |651|151|a,v,x,y,z
88 |655|155|a,v,x,y,z
89 |700|100|a,b,c,d,f,g,j,k,l,n,p,q,t,u
90 |710|110|a,b,c,d,f,g,k,l,n,p,t,u
91 |711|111|a,c,d,e,f,g,j,k,l,n,p,q,t,u
92 |730|130|a,d,f,g,h,j,k,m,n,o,p,r,s,t
93 |751|151|a,v,x,y,z
94 |800|100|a,b,c,d,e,f,g,j,k,l,n,p,q,t,u,4
95 |830|130|a,d,f,g,h,k,l,m,n,o,p,r,s,t
96 |=========================================================
97
98
99 [#marc_export]
100
101 == marc_export: Exporting Bibliographic Records into MARC files ==
102
103 indexterm:[marc_export]
104 indexterm:[MARC records,exporting,using the command line]
105
106 The following procedure explains how to export Evergreen bibliographic
107 records into MARC files using the *marc_export* support script. All steps
108 should be performed by the `opensrf` user from your Evergreen server.
109
110 [NOTE]
111 Processing time for exporting records depends on several factors such as
112 the number of records you are exporting. It is recommended that you divide
113 the export ID files (records.txt) into a manageable number of records if
114 you are exporting a large number of records.
115
116  . Create a text file list of the Bibliographic record IDs you would like
117 to export from Evergreen. One way to do this is using SQL:
118 +
119 [source,sql]
120 ----
121 SELECT DISTINCT bre.id FROM biblio.record_entry AS bre
122     JOIN asset.call_number AS acn ON acn.record = bre.id 
123     WHERE bre.deleted='false' and owning_lib=101 \g /home/opensrf/records.txt;
124 ----
125 +
126 This query creates a file called `records.txt` containing a column of
127 distinct IDs of items owned by the organizational unit with the id 101.
128
129  . Navigate to the support-scripts folder
130 +
131 ----
132 cd /home/opensrf/Evergreen-ILS*/Open-ILS/src/support-scripts/
133 ----
134
135  . Run *marc_export*, using the ID file you created in step 1 to define which
136    files to export. The following example exports the records into MARCXML format.
137 +
138 ----
139 cat /home/opensrf/records.txt | ./marc_export --store -i -c /openils/conf/opensrf_core.xml \
140     -x /openils/conf/fm_IDL.xml -f XML --timeout 5 > exported_files.xml
141 ----
142
143 [NOTE]
144 ====================
145 `marc_export` does not output progress as it executes.
146 ====================
147
148 === Options ===
149
150 The *marc_export* support script includes several options.  You can find a complete list
151 by running `./marc_export -h`.  A few key options are also listed below:
152
153 ==== --descendants and --library ====
154
155 The `marc_export` script has two related options, `--descendants` and
156 `--library`.  Both options take one argument of an organizational unit
157
158 The `--library` option will export records with holdings at the specified
159 organizational unit only.  By default, this only includes physical holdings,
160 not electronic ones (also known as located URIs).
161
162 The `descendants` option works much like the `--library` option
163 except that it is aware of the org. tree and will export records with
164 holdings at the specified organizational unit and all of its descendants.
165 This is handy if you want to export the records for all of the branches
166 of a system.  You can do that by specifying this option and the system's
167 shortname, instead of specifying multiple `--library` options for each branch.
168
169 Both the `--library` and `--descendants` options can be repeated.
170 All of the specified org. units and their descendants will be included
171 in the output.  You can also combine `--library` and `--descendants`
172 options when necessary.
173
174 ==== --items ====
175
176 The `--items` option will add an 852 field for every relevant item to the MARC
177 record.  This 852 field includes the following information:
178
179 [options="header",cols="2,3"]
180 |===================================
181 |Subfield          |Contents
182 |$b (occurrence 1) |Call number owning library shortname
183 |$b (occurrence 2) |Item circulating library shortname
184 |$c                |Shelving location
185 |$g                |Circulation modifier
186 |$j                |Call number
187 |$k                |Call number prefix
188 |$m                |Call number suffix
189 |$p                |Barcode
190 |$s                |Status
191 |$t                |Copy number
192 |$x                |Miscellaneous item information
193 |$y                |Price
194 |===================================
195
196
197 ==== --since ====
198
199 You can use the `--since` option to export records modified after a certain date and time.
200
201 ==== --store ====
202
203 By default, marc_export will use the reporter storage service, which should
204 work in most cases. But if you have a separate reporter database and you
205 know you want to talk directly to your main production database, then you
206 can set the `--store` option to `cstore` or `storage`. 
207
208 ==== --uris ====
209 The `--uris` option (short form: `-u`) allows you to  export records with
210 located URIs (i.e. electronic resources).  When used by itself, it will export
211 only records that have located URIs.  When used in conjunction with `--items`,
212 it will add records with located URIs but no items/copies to the output. 
213 If combined with a `--library` or `--descendants` option, this option will
214 limit its output to those records with URIs at the designated libraries.  The
215 best way to use this option is in combination with the `--items` and one of the
216 `--library` or `--descendants` options to export *all* of a library's
217 holdings both physical and electronic.
218
219 [#pingest_pl]
220
221 == Parallel Ingest with pingest.pl ==
222
223 indexterm:[pgingest.pl]
224 indexterm:[MARC records,importing,using the command line]
225
226 A program named pingest.pl allows fast bibliographic record
227 ingest.  It performs ingest in parallel so that multiple batches can
228 be done simultaneously.  It operates by splitting the records to be
229 ingested up into batches and running all of the ingest methods on each
230 batch.  You may pass in options to control how many batches are run at
231 the same time, how many records there are per batch, and which ingest
232 operations to skip.
233
234 NOTE: The browse ingest is presently done in a single process over all
235 of the input records as it cannot run in parallel with itself.  It
236 does, however, run in parallel with the other ingests.
237
238 === Command Line Options ===
239
240 pingest.pl accepts the following command line options:
241
242 --host::
243     The server where PostgreSQL runs (either host name or IP address).
244     The default is read from the PGHOST environment variable or
245     "localhost."
246
247 --port::
248     The port that PostgreSQL listens to on host.  The default is read
249     from the PGPORT environment variable or 5432.
250
251 --db::
252     The database to connect to on the host.  The default is read from
253     the PGDATABASE environment variable or "evergreen."
254
255 --user::
256     The username for database connections.  The default is read from
257     the PGUSER environment variable or "evergreen."
258
259 --password::
260     The password for database connections.  The default is read from
261     the PGPASSWORD environment variable or "evergreen."
262
263 --batch-size::
264     Number of records to process per batch.  The default is 10,000.
265
266 --max-child::
267     Max number of worker processes (i.e. the number of batches to
268     process simultaneously).  The default is 8.
269
270 --skip-browse::
271 --skip-attrs::
272 --skip-search::
273 --skip-facets::
274 --skip-display::
275     Skip the selected reingest component.
276
277 --attr::
278     This option allows the user to specify which record attributes to reingest.
279 It can be used one or more times to specify one or more attributes to
280 ingest.  It can be omitted to reingest all record attributes.  This
281 option is ignored if the `--skip-attrs` option is used.
282 +
283 The `--attr` option is most useful after doing something specific that
284 requires only a partial ingest of records.  For instance, if you add a
285 new language to the `config.coded_value_map` table, you will want to
286 reingest the `item_lang` attribute on all of your records.  The
287 following command line will do that, and only that, ingest:
288 +
289 ----
290 $ /openils/bin/pingest.pl --skip-browse --skip-search --skip-facets \
291     --skip-display --attr=item_lang
292 ----
293
294 --rebuild-rmsr::
295     This option will rebuild the `reporter.materialized_simple_record`
296 (rmsr) table after the ingests are complete.
297 +
298 This option might prove useful if you want to rebuild the table as
299 part of a larger reingest.  If all you wish to do is to rebuild the
300 rmsr table, then it would be just as simple to connect to the database
301 server and run the following SQL:
302 +
303 [source,sql]
304 ----
305 SELECT reporter.refresh_materialized_simple_record();
306 ----
307
308
309
310
311 [#importing_authority_records_from_command_line]
312 == Importing Authority Records from Command Line ==
313
314 indexterm:[marc2are.pl]
315 indexterm:[pg_loader.pl]
316 indexterm:[MARC records,importing,using the command line]
317
318 The major advantages of the command line approach are its speed and its
319 convenience for system administrators who can perform bulk loads of
320 authority records in a controlled environment. For alternate instructions,
321 see the cataloging manual.
322
323  . Run *marc2are.pl* against the authority records, specifying the user
324 name, password, MARC type (USMARC or XML). Use `STDOUT` redirection to
325 either pipe the output directly into the next command or into an output
326 file for inspection. For example, to process a file with authority records
327 in MARCXML format named `auth_small.xml` using the default user name and
328 password, and directing the output into a file named `auth.are`:
329 +
330 ----
331 cd Open-ILS/src/extras/import/
332 perl marc2are.pl --user admin --pass open-ils --marctype XML auth_small.xml > auth.are
333 ----
334 +
335 [NOTE]
336 The MARC type will default to USMARC if the `--marctype` option is not specified.
337
338  . Run *parallel_pg_loader.pl* to generate the SQL necessary for importing the
339 authority records into your system. This script will create files in your
340 current directory with filenames like `pg_loader-output.are.sql` and
341 `pg_loader-output.sql` (which runs the previous SQL file). To continue with the
342 previous example by processing our new `auth.are` file:
343 +
344 ----
345 cd Open-ILS/src/extras/import/
346 perl parallel_pg_loader.pl --auto are --order are auth.are
347 ----
348 +
349 [TIP]
350 To save time for very large batches of records, you could simply pipe the
351 output of *marc2are.pl* directly into *parallel_pg_loader.pl*.
352
353  . Load the authority records from the SQL file that you generated in the
354 last step into your Evergreen database using the psql tool. Assuming the
355 default user name, host name, and database name for an Evergreen instance,
356 that command looks like:
357 +
358 ----
359 psql -U evergreen -h localhost -d evergreen -f pg_loader-output.sql
360 ----
361
362 == Juvenile-to-adult batch script ==
363
364 The batch `juv_to_adult.srfsh` script is responsible for toggling a patron
365 from juvenile to adult. It should be set up as a cron job.
366
367 This script changes patrons to adult when they reach the age value set in the
368 library setting named "Juvenile Age Threshold" (`global.juvenile_age_threshold`).
369 When no library setting value is present at a given patron's home library, the
370 value passed in to the script will be used as a default.
371
372 == MARC Stream Importer ==
373
374 indexterm:[MARC records,importing,using the command line]
375
376 The MARC Stream Importer can import authority records or bibliographic records.
377 A single running instance of the script can import either type of record, based
378 on the record leader.
379
380 This support script has its own configuration file, _marc_stream_importer.conf_, 
381 which includes settings related to logs, ports, uses, and access control.
382
383 By default, _marc_stream_importer.pl_ will typically be located in the
384 _/openils/bin_ directory. _marc_stream_importer.conf_ will typically be located
385 in _/openils/conf_.
386
387 The importer is even more flexible than the staff client import, including the
388 following options:
389
390  * _--bib-auto-overlay-exact_ and _--auth-auto-overlay-exact_: overlay/merge on
391 exact 901c matches
392  * _--bib-auto-overlay-1match_ and _--auth-auto-overlay-1match_: overlay/merge
393 when exactly one match is found
394  * _--bib-auto-overlay-best-match_ and _--auth-auto-overlay-best-match_:
395 overlay/merge on best match
396  * _--bib-import-no-match_ and _--auth-import-no-match_: import when no match
397 is found
398
399 One advantage to using this tool instead of the staff client Import interface
400 is that the MARC Stream Importer can load a group of files at once.
401