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