Re: [Allegro] im vorfeld den/das längsten datensatz/längste feld ermitteln? [grammatik des BETREFFs korrigiert] [auch nachbetrachtungen!]

Klaus Lehmann lehmann_klaus at t-online.de
So Mai 26 18:57:09 CEST 2013


 
Guten Tag Herr Lackhoff und andere, die am Thema mitgewirkt haben,
danke für Ihre Nachrichten. Danke für Ihre kompetenten Lösungsansätze!


ich denke, das war ganz fruchtbar für alle Beteiligten und die schweigsamen 
mitleser ;-)
die werkzeuge und "gedanken", die hier vorgestellt wurden, werden 
einem sehr gut weiterhelfen können, wenn man mal auf überlange 
inhalte stösst.


ich habe jedenfalls nach (gefühlten) 2 1/2 tagen [kein witz!] mit handarbeit ca 20 (oder 30) überlange felder herausextrahieren können. und die datenbank scheint jetzt "sauber" zu sein.



nachbetrachtungen ..
1. was mich nur sehr irritiert, bei meinem speziellen fall: wie sind 
diese teuflischen inhalte überhaupt in die allegro-datenbank 
reingekommen? vielleicht hat das auch damit was zu tun, daß ich z.b. 
40x den selben datensatz gefunden, der absulut IDENTISCH war (#99n und 
#99e waren gleich!). auch fällt mir jetzt wieder ein, daß es bei 
einem der überlangen #4nz'er einen(?) inhalt gab, der sich immer und 
immer wiederholt hat. warum wurden sie abgespeichert? sowas sollte gar 
nicht klappen (oder doch?). jedenfalls beim nacheditieren -die arbeit 
hatte ich versucht, natürlich ;-) auf die kollegen vor Ort abzuwälzen-, 
stürzten presto bzw. a99 ab! [nein, bitte nicht an avanti/acon denken; 
sie spielten und spielen keine rolle!]


2. die ganze vorgefundene datenbankstruktur war fürchterlich. man 
stelle sich vor, obwohl ein netzwerk ansatzweise sogar vorhanden war, 
gab es 5 datenbanken. ich nenne sie nicht, es soll sich keiner 
angesprochen oder an den pranger gestellt fühlen [obwohl: 
die fussbastonade wäre schon angebracht gewesen. hust, hust... ;-) ]. 

jedenfalls: maximal konnten von einer bibliographischen aufnahme durchaus 5 
datensätze existieren. mit den unterschiedlichsten korrekturen! 
nunja, für einen allergologen ein kinderspiel? nein, monsieur! im 
geigenstiehl. die sache wurde noch dadurch verfeinert, daß es kein 
durchgängiges identnummernsystem gab. merke: maximal 5 datensätze, die 
eingentlich gleich sein sollten, konnten verschiedene #00 (und #09) haben. 
ein kinderspiel2? nope! #99n und #99e waren dann auch noch verschieden. 
die kollegen hatten hier mal was geändert, dann da mal was geändert. 
und den großen "rest" für später aufgehoben: "wenn die winter kälter 
werden". kurz vor der pension könne man ja mal aufräumen! niente!
maschinell konnte man da NIX zusammenführen, nur intellektuell werden 
sie es dann tun müssen. nun müssen sie aus 50.000 datensätzen ca 30.000 machen.


zu 2.: kollege allers ist am bauen einer flextools, welches den 
vergleich von mehreren datensätzen erleichtern soll, wenn es mehrere 
datenfelder gibt, die gleich sind (z.b. #20), und man bestimmte 
datenfelder zum vergleich NICHT nehmen möchte (#00, #99n und #99e). 
noch gibt es nicht mal eine alpha-version....


4. DAS ganze wird weiter verschärft: die kollegen dachten, sie seien 
besonders schlau, sätzten sie doch in die [z.B.:!] #84 die #00 des 
personenstammsatzes, den sie gebildet hatten. glauben(!) sie mir, daß 
da auch die #09 benutzt wurde, und daß es durchaus 3-5 gleiche(?) 
perso-stammsätze geben kann. wer verweist da eigentlich auf wen?


5. wir mag es dazu gekommen sein? nun, ein bibliothekar, stolz wie 
bolle, vor 10-20 jahren mit allegro-C anfangend, "verstand" sein allegro-C, 
baute sich sein system auf. fragte NIE in der liste nach, wenn etwas 
unklar war. machte sich NIE gedanken über strukturen. löste 
scheinbar(!) seine/ihre probleme IMMER selber. ging dann irgendwann in rente. 
einen scherbenhaufen hinterlassend. naja, wollen wir mal nicht so 
STRENG sein: man findet ja was im katalog. wirklich ehrlich: man findet alles! 
nur eben gedoubelt, vertrippelt oder quadroubelt. und sogar verquintet? 
ich weiss es nicht. wir wollen das beste draus machen!
wer mitliest und sich "etwas verstanden" oder angesprochen fühlt, der 
gehe insich. (oute sich.) hole endlich kompetente hilfe! systeme mit 
allegro-C sind längst KEIN selbstläufer mehr! ehrlich!



viele grüße
ihr klaus lehmann



> On 25.05.2013 21:22 Klaus Lehmann wrote:

> Ich habe den Einzeiler mal mit einer kleinen Abwandlung bei mir
> durchlaufen lassen:

> perl -n -e "$/=qq(\x00); warn $_ . length if length > 500" TRENN.ALG

> d.h. Aendere den Trenner auf ASCII 0 (\x00), da Sie ja lange Felder und
> nicht lange Datensaetze haben wollen. Standardmaessig ist der
> Zeilenumbruch der Trenner, deshalb braucht der Einzeiler von Herrn
> Berger keine solche Angabe.
> Gib dann das Feld und dessen Laenge aus, wenn die Laenge groesser 500
> Zeichen ist.
> Dabei kommt z.B. sowas raus:

81 Vorg. ---->> Verein von Altertumsfreunden im Rheinlande: Jahrbücher
> des Vereins von Alterthumsfreunden im Rheinlande * Beil. u. darin
aufgeg. ---->> Provinzialmuseum <Bonn>: Berichte der Provinzialmuseen zu
> Bonn und Trier * Forts. ----> Verein von Altertumsfreunden im
> Rheinlande: Bonner Jahrbücher des Vereins von Altertumsfreunden im
> Rheinlande und des Rheinischen Provinzialmuseums in Bonn * Darin ---->
> Provinzialmuseum <Trier>: Jahresbericht des Provinzialmuseums zu Trier *
Beil. ---->> Römisch-germanisches Korrespondenzblatt * 100.1896 -
> 117.1908 darin u. ab 118.1909 Beil. ----> Rheinprovinz /
> Provinzialkommission für Denkmalpflege: Berichte über die Tätigkeit der
> Provinzialkommission für die Denkmalpflege in der Rheinprovinz und der
> Provinzialmuseen zu Bonn und Trier * 1896 - 1908 darin ----> Berichte
> über die Tätigkeit der Altertums- und Geschichtsvereine und über die
> Vermehrung der kirchlichen, städtischen und Vereinssammlungen innerhalb
> der Rheinprovinz 974 at -e line 1, <> chunk 725326.

> D.h. es gibt da irgendwo (im insgesamt 725326. Feld, was nicht wirklich
> weiterhilft) ein Feld, das 974 Zeichen lang ist, die Kategorienummer
> '81' hat und den angegebenen Text enthaelt.

> Hier eine kleine Abwandlung, die den ganzen Satz ausgibt, wenn irgendein
> Feld darin laenger als 500 Zeichen ist:

> perl -n -e "warn $_ if grep {length > 500} split /\x00/" TRENN.ALG

> Oder mit Ausgabe der Laenge des zu langen Feldes:

> perl -n -e "warn $l . ': ' . $_ if grep {length > 500 && ($l = length)}
> split /\x00/" TRENN.ALG

> Alles ausprobiert unter Windows 7 mit Perl 5.16.2.
> Unter Linux muessen Sie vermutlich einfache Anfuehrungszeichen statt der
> doppelten nehmen, da sonst die shell den Inhalt interpretiert.

> Viele Gruesse
> Michael Lackhoff

> p.s.: Genaugenommen muesste man bei der ersten Loesung noch 1 fuer den
> Trenner abziehen, der mitgezaehlt wird, waehrend 'split' nur den Inhalt
> _zwischen_ den Trennern zurueckgibt aber ich denke das ist in
> Zusammenhang Ihres Problems vernachlaessigbar.

-- 
Mit freundlichen Grüßen,
Ihr Klaus Lehmann
http://allegronet.de * eMail: allegronet at t-online.de * phone: 03528-452 807(fax 809) * mobil: 0171-953 7843
allegronet.de * Klaus Lehmann * D-01454 Radeberg * Kleinwolmsdorfer Str. 37
zuständiges Finanzamt: FA Hoyerswerda, zuständige Kammer: IHK Dresden
zuständige Aufsichtsbehörde: Gewerbeamt Radeberg, USt-IdNr: DE247550760
* Software für zufriedene Bibliothekare: 1000x bewaehrt und ergiebig
* Bereits 4x allegro-utf8. Buchen Sie die allegro-Roadshow
* Yes we can. Only with allegro. Yes we do. Always with allegro.
* Internetkataloge & WebHosting für Allegro-C & Web 2.0 with VuFind
* 2011: Sponsor der Peter-Sodann-Bibliothek (Staucha)
* 2012: mit allegro-utf8 V3 und allegro-vufind auf der IFLA in Helsinki
* 2013: allegronet ist ein eingetragenes Warenzeichen






Mehr Informationen über die Mailingliste Allegro