TextLib import leíró file ===== Célja ===== Ebben a file-ban lehet leírni, hogy mit és hogyan kell importálni. Meg lehet adni rekordtípusonként és adatfile-onként is, és lehet a kettőt keverni is. Azaz a rekordtípusban leírjuk, ami közös, aztán adatfile-onként azt, ami csak az adatfile-ra jellemző. A kulcsszavak azért ékezetmentesek, hogy a CWI, 852, stb kódkészletet használó gépeken is ugyanúgy nézzenek ki. A file-t bármilyen ASCII szövegek szerkesztésére alkalmas szövegszerkesz- tővel készíthetjük, módosíthatjuk. ===== A file felépítése ===== -- a Cel-t általában nem kell megadni, mivel a csere file-ban rendszerint benne van. Ha mégsem, akkor 'M'ódosítást tételez fel a program. -- Minden # karakterrel kezdődő sor megjegyzés -- Az üres sorok nem számítanak -- {AA|BB|CC} jelentése: vagy AA vagy BB vagy CC -- [AA] jelentése: AA elhagyható 1.sor : TextLib Import leiro file - InfoKer 1995 2.sor : Kodkeszlet:{CWI|MNBCD|OSZK1|OSZK2|ISO2|ALA|ANSEL|852|LATIN2|UTF8|AUTO} 3.sor : Cel:{B|M|T} 4.sor : Teljesmezo:{I|N} 5.sor : Rekordazonosito:{I|N} Ezután a leíró részek jönnek. Ha egy mezőre nem adtunk meg semmit, akkor azt nem veszi át a program. * Egy adatfile leíró rész első sora: &d adatfile * Egy rectipus leíró rész első sora: &r rectipus * Az utána jövő sorok egyformák: AzonositoX:mező1 mező2 / mező3 ... - max 4 ilyen sor lehet !! Azonosito:mező1 mező2 / mező3 ... - max 4 ilyen sor lehet !! Hasonlo:mező1 mező2 ... - max 4 ilyen sor lehet * Az ezutáni sorok cserélhetők és ismétlődhetnek is. Atvesz:mező1 mező2 ... - mező értéket átvesz (üreset is) Modosit:mező1 mező2 ... - mező értéket átvesz, de nem töröl Kitolt:mező1 mező2 ... - csak a nálam üresbe vesz át Vegyit:mező1 mező2 ... - ismételhető mezőhöz hozzávesz Eldob:mező1 mező2 ... - a mezőt nem veszi át A mezőN értéke lehet /MIND és /RENDSZER is! ===== Magyarázat ==== Kódkészlet ~~~~~~~~~~~~~ CWI - CWI kódkészlet OSZK1,ALA,ANSEL - OSZK által is használt ANSEL karakterkészlet MNBCD,OSZK2,852 - PC 852-es (DOS-ban használt 852-es kódlap) ISO2,LATIN2,8859-2 - ISO-8859-2 (más néven latin2) kódkészlet UTF8 - UTF-8 karakterkészlet AUTO - automatikus karakterkészlet felismerés Cel ~~~~~~ M - módosítás és bevitel. Általában ezt használjuk. B - Csak új rekordok bevitele. A már meglévő rekordok nem módosulnak. T - Törlés. Csak korábban ugyanebból az adatbázisból importált rekordok törlődnek. Teljesmezo: ~~~~~~~~~~~~~ I - igen, azaz a mező tartalma úgy, ahogy az input file-ban van N - nem, a mező elejéről és végéről levágódnak az egyéb jelek, mint pl: . , ; : / ) ( = Default értéke: I HunMarc rekordok betöltésekor lehet rá szükség, ha a rekordforrás egy Voyager adatbázis. Azokban ugyanis a mezők végére beírják a cédula nyomtatásánál szokásos jeleket. A címek végén ezért előfordulhat / ; = : attól függően, hogy alcím, párhuzamos cím vagy szerzőségi közlés mező van még kitöltve a rekordban. Ilyen rekordok betöltésekor érdemes beállítani a Teljesmezo:N értéket. Rekordazonosito: ~~~~~~~~~~~~~~~~~~ Alapértelmezett értéke 'I', akkor érdemes megadni, ha ettől el akarunk térni. HunMarc rekordokat tartalmzó állományoknál - pl. Köztaurusz - előfordul, hogy ugyanaz a rekord különböző állományokban eltérő rekordazonosítóval fordul elő. Mivel az import program feltételezése szerint az egyforma azonosítójú rekordok kötelezően ugyanazt a rekordot jelentik, az ettől való eltérés súlyos keveredést okozhat. A keveredés elkerülhető, ha a 'Rekordazonosito:N' megadásával az import programot arra utasítjuk, hogy a rekordok azonosításánál a rekordazonosítót hagyja figyelmen kívül, és csak az 'Azonosito'-ként (lásd. a következő bekezdés) megadott mezőket használja. AzonositoX: , Azonosito: ~~~~~~~~~~~~~~~~~~~~~~~~~~ Az azonosítás során a program az import szövegállományból érkező rekordokat összehasonlítja a fogadó adatbázisban lévőkkel. Ha talál azonosat, és csak egyet, akkor annak a rekordoknak a módosítása következik, ha több azonos rekord is volt, akkor a most bejöttet újnak veszi fel, és készít a LOG file-ba egy listát az azonos rekordokról. Az azonosito sorai (maximum 4) egymás után dolgozódnak fel, minden következő csak akkor, ha az előző azonosítás eredménytelen volt. A sorok tehát VAGY kapcsolatban állnak egymással, így sorrendjük erősorrend is. Az egyes sorok értelmezésének eredményeképp akkor minősül azonosnak két rekord, ha a sorban megadott azonosítási szempontok mindegyike igaz, tehát a feltételek ÉS kapcsolatban állnak egymással. Ez tehát azt jelenti, hogy a megadott mezők ha kitöltöttek, akkor tartalmuk páronként azonos, az üresek pedig szintén páronként üresek. Az egyes sorok kétféleképpen azonosíthatják a rekordokat: 1. Megadunk legalább egy indexes mezőt, és több tetszőleges mezőt. 2. Megadunk egy oda-vissza pointeres mezőt (pl: kötet közös adata), és több tetszőleges mezőt. Erre a második módszerre például a cím nélküli kötetek azonosítása miatt van szükség. Az egyes sorok működése tehát a következő: Az indexes mezők vagy az oda-vissza pointeres mező alapján a program lekeresi az adatbázisban lévők közül a megadottal azonosat, majd az azonosító sorban megadott további mezőkre is elvégzi az összehasonlítást. A mezők között egy helyen használhatjuk a '/' jelet. Ennek az a jelentősége, hogy a rekordok keresését csak a / jel előtti mezőkre végzi a program, az összehasonlítást viszont minden mezőre. Jó példa a [Megjelenés éve] mező, amit érdemes az azonosításkor használni, de nem érdemes erre keresni is, mert rengeteg találatot eredményezne. Az összehasonlításhoz legfeljebb 8 mezőnév adhatő meg. Ha több azononos rekordot talál a program, akkor AzonositoX: esetén kiválasztja az első megfelelő rekordot, azzal tekinti azonosnak a bejövő rekordot. Azonosito: esetén nem választ, inkább bevisz egy új rekordot. Hasonlo: ~~~~~~~~~~ Itt csak indexelt mezőket adhatunk meg. Ezek alapján keresi meg a program az importált rekordokhoz hasonló rekordokat. Itt tehát nem végez mező egyezés ellenőrzést, csak az indexek alapján keresi a hasonlókat. Az összehasonlításhoz legfeljebb 8 mezőnév adhatő meg. A hasonló rekordokról lista készül a LOG file-ba. ===== Magyarázat ===== Ha a bejövő rekordnak megfelelő rekordot találtunk az adatbázisban, akkor nem veszünk fel új rekordot, hanem a meglevőt módosítjuk. Meg kell mondani, hogy melyik mezővel mit kell kezdeni. Lehetnek mezők, amiket át kell venni a bejövő rekordból, lehetnek olyanok, amiknek az értékét meg kell tartani, lehetnek olyanok is, amiket csak akkor kell átvenni, ha a bent levő rekordban is ki van töltve. Az ismételhető mezéknél még az is előfordulhat, hogy a mezők tartalmait össze kell fésülni. Ezentúl BEJÖVÖ és MEGLEVÖ rekordokról beszélünk. BEJÖVÖ - az import file-ból beolvasott rekord. MEGLEVÖ - a BEJÖVÖ rekorddal azonos rekord az adatbázisban (Ezt az Azonosito: mezők alapján döntöttük el). Atvesz: ~~~~~~~~~ A MEGLEVÖ itt felsorolt mezői a BEJÖVÖ szerint töltődnek ki. Ezeknek a mezőknek a régi értékei mindenképp elvesznek. 1. Ha a BEJÖVÖ-ben a mező üres, akkor a MEGLEVÖ-ből is kitörlődik. 2. Ha a BEJÖVÖ-ben nem üres, akkor a MEGLEVÖ-be is ez kerül bele Modosit: ~~~~~~~~~~ A MEGLEVÖ rekord ezen mezői a BEJÖVÖ szerint töltődnek ki. Ha a BEJÖVÖ-ben a mező üres, akkor annak MEGLEVÖ-ben a régi értéke megmarad! Annyiban különbözik tehát az Atvesz-től, hogy nem törli azon mezők mezők tartalmát, amik nem jönnek az input file-ban. Kitolt: ~~~~~~~~~ Csak akkor tölti ki a megadott mezőket, ha a MEGLEVÖ rekordban a mező üres volt. Ha már ki volt töltve, akkor nem nyúl hozzá. Vegyit: ~~~~~~~~~ Ismételhető mezőknél van értelme. A MEGLEVÖ rekordban levő mezőkhöz hozzáveszi új ismétlődésként a BEJÖVÖ rekord megfelelő mezőit. Eldob: ~~~~~~~~ A MEGLEVÖ rekordban ezeket a mezőket nem változtatja. Ujonnan bejövő rekordból kitörli ezeket a mezőket. ===== Példa ===== Egy kis import leíró file található az file-ban.