Rady pro knihovny se systémem Aleph
Jak zajistit automatizované (týdenní) exporty
Upozornění:
- Návod se týká posílání NOVÝCH záznamů ve standardní kvalitě. Lze ho použít i pro pravidelné posílání oprav/odpisů nebo retrokonverze, za předpokladu, že i přijímání těchto dávek je domluveno se správcem SK - pak ale musejí mít tyto další soubory jiná jména podle požadované konvence.
- Jde jen o doporučení, jak poskládat odesílací skript, spolu s různými tipy. Příklady příkazů jsou v c-shellu a mají sloužit jen k inspiraci, je použito zástupných jmen báze, souborů, mailových adres ap. Nelze použít, "jak leží a běží"! Navíc i procedury Alephu zde uváděné jako příklad nemusejí být stejné ve verzi, kterou knihovna používá (ukázky jsou z verze 16)
- Než začnete posílat automatizované dávky, kontaktujte správce SK.
Odesílání záznamů do SKC (=skript,který lze umístit do démonu nebo cronu, ale samozřejmě i spouštět ručně) zahrnuje následující procedury:
- výběr záznamů
- export a úprava záznamů
- odeslání exportovaného souboru na ftp
- odeslání průvodních e-mailů
- dle potřeby úklid na disku a přemístění odeslaných souborů "do archívu"
- případně změna "příznaku" v odeslaných záznamech
Označování záznamů pro export
Záznamy pro export pro SKC lze v zásadě označovat dvěma způsoby:
- ve zvoleném (indexovaném) interním poli uloží katalogizátor příznak pro odeslání do SKC (např. určitý kód pro nové záznamy, jiný pro retro nebo opravy ap.)
=> výběr pak proběhne vyhledáním záznamů s tímto kódem a po odeslání se příznak změní - ve zvoleném (indexovaném) interním poli uloží katalogizátor příznak pro odeslání do SKC jako prefix společně s aktuálním datem (různé prefixy pro různé druhy záznamů)
=> výběr pak proběhne vyhledáním záznamů na rozmezí dat (např. od sk20061111 do sk20061117) a po odeslání není třeba údaje měnit
Druhý případ využijí knihovny, které chtějí mít trvale podchycené datum dokončení záznamu, případně též zodpovědnou osobu (např. v dalším podpoli).
Takto např. používají knihovny pracující v režimu "cluster" v NKC pole IST (=interní stavové kódy).U záznamů, které SK nepřijal, musí katalogizátor při opravě opět příslušným způsobem příznak nebo datum prefixu změnit, aby byly záznamy "sebrány" znovu.
K nastavení v démonu
Pokud se volí varianta "od data - do data", pak se v démonu nastavují ke skriptu parametry:
1.parametr = počáteční datum = %DATE-D006 (aktuální datum -6)
2.parametr = konečné datum = %DATE (aktuální datum)Při jménu skriptu sk_export při spouštění v neděli večer bude řádek v démonu vypadat např. takto:
00 19:00:00 N sk_export ......../sk_export %DATE-D006 %DATE
K nastavení jmen souborů a dalších proměnných ve skriptu
Nastavení vlastního jména souboru (za podtržítkem) - postačí datum v podobě RRMMDD:
set datum=`date +%y%m%d`
Pokud se volí varianta "od data - do data", pak je ještě užitečné převést parametry zadávané v démonu (nebo z příkazového řádku, pokud se skript pouští z nějakých důvodů ručně):
set od=$1
set do=$2
(Další možností, jak nastavovat "od data - do data", aniž by se používalo zadávání parametrů v démonu, je po proběhnutí akce uložit datum exportu do pomocného souboru. Pak se parametrem "od" stane toto datum, parametrem "do" bude datum aktuální mínus 1).Výběr záznamů
Ukládací soubor bude v tomto případě sknew.
- Pro variantu příznaku bez data - předpokládáme, že příznak je NEW a posílá se do rejstříku SK (souborný katalog nebo stavové kódy):
csh -f $aleph_proc/p_ret_03 "AAA01,sknew,sk=new,0,00," > /dev/null
- Pro variantu prefixu s datem - předpokládáme, že prefix je nv a posílá se též do rejstříku SK:
csh -f $aleph_proc/p_ret_03 AAA01,sknew,sk=nv$od-@@062nv$do,0,00, > /dev/null
(jde o CCL dotaz typu rozšíření, tj. skutečný dotaz je např. sk=nv20061110 ->nv20061117)
Export záznamů
Knihovna musí před zasláním do SKC záznamy upravit - zahodit interní a lokální pole (písmenná + 99X), případně zahodit další nestandardní údaje, kvůli kterým by byl záznam odmítnut. Z písmenných polí se ponechává pouze LDR. Do pole 910 se mohou přenést signatury z jednotek.Úpravy je možné dělat buď na exportu pomocí fixu (fix_doc_do_file_08), nebo posléze úpravou vyexportovaných dat (příkazy grep -v, sed, zvláštní jednoúčelové skripty apod.).
Vyexportovaný soubor bude sknew.dat.
- Prostý export - příkaz pro export:
csh -f $aleph_proc/p_print_03 "AAA01,sknew,Eng,ALL##,,,,,,,,sknew.dat,A,,,," > /dev/null
V tomto případě musejí následovat další příkazy a/nebo skripty k opracování souboru.
- Export s s expand-programem SKC1 s fixem skc1.fix, který upravuje jen bibliografický záznam:
příkaz pro export:
csh -f $aleph_proc/p_print_03 "AAA01,sknew,Eng,ALL##,,,,,,,,sknew.dat,A,,SKC1,," > /dev/null
řádek v tab_expand:
SKC1 fix_doc_do_file_08 skc1.fix
příklad fixu skc1, který zahazuje pole BAS, IST a FMT a přidává pole 910 se siglou knihovny
1 BAS## DELETE-FIELD
1 IST## DELETE-FIELD
1 FMT## DELETE-FIELD
2 LDR ADD-FIELD 910 ,L,$$aAAA000
Poznámka: Přidat siglu tímto způsobem lze jen tam, kde připadá v úvahu jediná sigla a kde není důvod mít pole 910 v záznamu. Pokud pole 910 přidávají/editují katalogizátoři, je potřeba mít nastavenu kontrolu na neopakovatelnost tohoto pole (check_doc_doc) a kontrolu na jedinou možnou hodnotu v 910a (check_doc_tag_text) - toto nelze uplatnit u souborných katalogů. Pozor, chyby v tomto poli zastavují import!- Export s expand-programem SKC2 s fixem skc2.fix, který upravuje bibliografický záznam a zároveň tahá signatury z jednotek:
příkaz pro export:
csh -f $aleph_proc/p_print_03 "AAA01,sknew,Eng,ALL##,,,,,,,,sknew.dat,A,,SKC2,," > /dev/null
řádky v tab_expand:
SKC2 expand_doc_bib_z30
SKC2 fix_doc_do_file_08 skc2.fixpříklad fixu skc2, který přidává signatury do 910b, za podmínky, že nejde o seriál, status 04 a status zpracování XX:
(převod údajů z jednotek do podpolí pole Z30 viz expand_doc_bib_z30; podmínky lze nastavovat libovolně)1 Z30## SE DELETE-FIELD
1 Z30## DELETE-FIELD-COND Y,$$f04
1 Z30## DELETE-FIELD-COND Y,$$gXX
1 Z30## CHANGE-SECOND-IND-MATCH #,0,$$h
2 910## FIRST CONCATENATE-FIELDS Z30#0,h
2 Z30#0 FIRST CHANGE-FIELD X30
2 910## FIRST CONCATENATE-FIELDS Z30#0,h
2 Z30#0 FIRST CHANGE-FIELD X30
.... (opakovat dle žádoucího počtu signatur)
2 910## CHANGE-SUBFIELD h,b
3 X30## DELETE-FIELD
3 Z30## DELETE-FIELD
3 FMT## DELETE-FIELD
3 BAS## DELETE-FIELD
3 IST## DELETE-FIELDPomocí nástrojů fix_doc_do_file_08 by mělo být možné v souborných katalozích univerzit vygenerovat podle dílčích knihoven i sigly a signatury pro pole 910.
Umístění záznamů na ftp
(Tato ukázka je pouze nejprimitivnější způsob, většinou budete znát různé lepší způsoby - jak maskovat heslo ap.)
ftp ftp.nkp.cz
login ....
password .......
put $alephe_dev/aaa01/scratch/sknew.dat auto/aaa001uc.mal_$datum
byOdeslání průvodních e-mailů
Je třeba odeslat dva e-maily: zprávu pro souborný katalog a zprávu pro katalogizátory, aby nezapomněli zkontrolovat statistiky a opravit chyby.
Různé mailery pracují různě, takže zde dvě ukázky:- Ukázka zprávy pro katalogizátory podle způsobu, jakým je posílá NK ČR:
echo 'From: aleph@nkp.cz' > skexp_mail
echo 'Subject: export pro SKC' >> skexp_mail
echo 'Probehl export pro SKC. Zitra najdete vysledky importu ve statistice.' >> skexp_mail
echo >> nkexp_mail
echo -n 'Pocet zaznamu: ' >> nkexp_mail
wc -l $alephe_scratch/sknew >> nkexp_mail
echo >> nkexp_mail
echo 'Zdravi Aleph' >> nkexp_mail
/usr/lib/sendmail aaa@nkp.cz bbb@nkp.cz < nkexp_mail- Ukázka generování a odesílání obou zpráv v propracovanější variantě podle VKOL:
echo "aaa000uc.mal_$datum `wc -l $alephe_scratch/sknew`" > skc_ftp
awk -f sk_export_ftp.awk -vk=1 skc_ftp > skc_ftpmail
awk -f sk_export_ftp.awk -vk=2 skc_ftp > skc_ftpmailvkol
Mail -s "Export OLA001 $od-$do" skc@nkp.cz < skc_ftpmail
Mail -s "Export pro SK CR $od-$do" aaa@vkol.cz bbb@vkol.cz < $skc_ftpmailvkolVýňatek ze skriptu sk_export_ftp.awk:
{
print "Na server ftp.nkp.cz byly nahrany zaznamy pro import do souborneho katalogu: ";
}
print "";
}
{
if ( $2 == 0 ) { print $1 " ... zadny zaznam"; z = "ne"; }
if ( $2 == 1 ) print $1 " ... " $2 " zaznam";
if ( $2 == 2 || $2 == 3 || $2 == 4 ) print $1 " ... " $2 " zaznamy";
if ( $2 > 4 ) print $1 " ... " $2 " zaznamu";
}
{
if ( k == 2 )
{
print "";
print "Provedte prosim kontrolu importu na strance:";
print " http://aleph.nkp.cz/web/skc/.......";
print "";
print "Chyby opravte a pro nove zaslani aktualizujte pole ......";
print "";
}
}
{
print "";
print "Tento email je posilan automaticky exportni procedurou.";
print "";
print "V pripade potreby piste na .....";
print "";
}Změna "příznaku" v odeslaných záznamech
Pokud je potřeba změnit příznak z "poslat do SK" na "posláno do SK", je třeba příslušné pole vyexportovat, provést náhradu a naimportovat zpět, nebo vyexportovat s úpravou pomocí fixu a poté naimportovat zpět.
Jak by pak vypadaly řádky ve skriptu (např. pro pole pojmenované SKC):
export:csh -f $aleph_proc/p_print_03 "AAA01,sknew,Eng,SKC##,,,,,,,,sknew.skc,A,,SKC3,," > /dev/null
(jméno fixu, zde SKC3, jen v případě, že se úprava dělá pomocí fixu; jinak musí následovat náhrada hodnoty v poli jinou cestou)
import:
csh -f $aleph_proc/p_manage_18 AAA01,sknew.skc,,,OLD,,,FULL,COR,M,,,,, > /dev/null