allegro-Fortbildung                                         

   11    Datenbankadministration
   11.5    Daten von einem Katalog in einen anderen schaufeln



Folgende Situation ist nicht so ganz selten:
Man hat zwei Datenbanken, wir nennen sie mal A und B.
In A sind eine Menge Daten, die man eigentlich in B haben will.
Oder es sollen gleich alle Daten von A nach B, damit man nur noch
eine Datenbank hat.
Wenn es nur wenige Titel sind, geht es ja sehr gut mit der
Schnellkopplung, siehe Lektion 5-3.6. Heute interessiert uns aber der
Fall, wenn es sehr viele Daten sind und man weder Zeit noch Lust hat,
sie einzeln zu kopieren.
Wie geht das?

Hier das Rezept, kurz und knapp und Schritt für Schritt:

0. Haben A und B dasselbe Datenformat? D.h. sind die Feldnummern die
   gleichen? Wenn nicht, wird es schwieriger! Dann muß erst eine
   Exportparameterdatei her, die einem die Daten aus A in das Schema
   der Datenbank B umwandelt. Das können wir hier nicht behandeln,
   dazu müßten Sie die Handbuchkapitel 6 und 10 studieren oder einen
   Allegrologen beauftragen.

Wir nehmen also an, beide Datenbanken besitzen dasselbe Format.

1. Datenbank A starten. Menü "Füllhorn / EXPORT..."

2. Menüpunkt "Andere Exportparameter nehmen"
   Aus der Datei-Auswahlliste, die dann erscheint, wählen Sie die Datei
   i-1.apr (sie liegt auf dem Prog.Verz., also meistens c:\allegro)
   [Hat man zwei verschiedene Formate, dann ist an dieser Stelle die
   für die Umwandlung erstellte Parameterdatei zu wählen!]
   Vorsicht: Gibt es Sätze in A und B, die identische Nummern in #00
   haben? Hinweise für diesen Fall geben wir ganz unten.

3. "Andere Exportdatei einstellen"
   Geben Sie dann den Dateinamen "transfer.alg" ein. (Wichtig ist nur
   das ".alg", der Name selbst darf anders lauten)

4a. Menüpunkt "Ganze Datenbank exportieren" , wenn alle Daten überführt
    werden sollen.
4b. Ergebnismengen aus den gewünschten Daten bilden und jeweils dann
    den Menüpunkt  "Export / Aktuelle Erg.Menge ausgeben" .
    Bis man alle Daten zusammen hat. Auch einzelne Sätze können
    beliebig noch dazu exportiert werden :
        Punkt "Aktueller Satz" im Menü "Export"
    Aber Achtung: wenn ein Satz hierbei zweimal exportiert wird, weil
    er z.B. in zwei Ergebnismengen vorkommt, hat man ihn hinterher
    doppelt in A!

5. Datenbank B öffnen, Menü "Datei / Weitere offline-Datei laden"
   Die Datei transfer.alg auswählen und einlesen lassen.

6. Zuerst sind dann diese Daten in der Liste der "Daten in Bearb.", die
   man auch mit Alt+q aufmachen kann. Hier ist es möglich, einzelne
   Sätze noch zu bearbeiten, bevor man die Daten wirklich einspeisen
   läßt. Diese Sätze erscheinen mit blauem Hintergrund. Dazu siehe auch
   "Sonderlektion" in Lektion --> 13.3!
   Das endgültige Einspeisen geht dann so:

7. Menü "Datei / Offline-Datei -> Datenbank"
   Dann werden die Daten der Liste Satz für Satz gespeichert. Je nach
   Anzahl kann das ein paar Minuten dauern...


Datenbank B darf selbstsverständlich auf einem anderen Rechner liegen,
der ganz woanders auf dem Globus steht! In dem Fall muß man die Datei
transfer.alg natürlich erst zu diesem Rechner hintransportieren oder
über das Netz, per Mail oder ftp, übertragen. Danach kann man mit
Punkt 5 weitermachen, auf Rechner B natürlich.

Jetzt noch ein paar Hinweise für Fortgeschrittene!

Vorkommen kann aber auch, daß man die "anderen Daten" nicht einfach so
hineinschaufeln will, sondern daß es in Bank B schon Sätze gibt, die
durch die anderen ersetzt oder ergänzt werden sollen, oder eben nicht,
d.h. daß die anderen Sätze zu ignorieren sind, wenn schon einer für
dasselbe Dokument vorhanden sind (Dublettenverhinderung). Alles das
läßt sich machen, Wichtig ist dann aber, daß es einen eindeutigen
Schlüssel gibt, der in A-Sätzen und B-Sätzen identisch ist. Das kann
die Nummer in der #00 sein, es kann die ISBN (Vorsicht! Verlage machen
Fehler) oder auch eine Signatur sein. Man muß im konkreten Fall
jeweils genauer untersuchen, was der beste Schlüssel ist. Diesen macht
man für die Dauer des Einmischens zum Primärschlüssel: man setzt die
zugehörige ak-Zeile in den Indexparametern an die erste Stelle.
Das Einmischen selbst wird dann am besten nicht mit a99 gemacht,
sondern dem DOS-Programm UPDATE.EXE. Dazu steht alles Wichtige im
Kapitel 9 des Handbuchs  (in a99 eingeben:  h ac9).

Hier nur ein Beispiel, wie update.exe gestartet wird:
Wir nehmen an, die Datenbank B liegt auf c:\allegro\katalog, hat die
Konfiguration A.CFG und heißt "cat" (arbeitet also mit cat.api).
Unsere Datei aus Bank A soll auch hier  "transfer.alg"  heißen.
und auf c:\allegro liegen.
Dann startet man in einem DOS-Fenster vom Verzeichnis c:\allegro
aus das Einspeisen mit diesem Befehl:

  update -fm11 -ka -dc:\allegro\katalog -utransfer.alg -n2 -m1

Der Modus des Einspeisens steht hinter der Angabe -fm. Der Modus 11
bedeutet: Gefundene Sätze (mit identischem Primärschlüssel) sollen
komplett durch die Sätze aus transfer.alg ersetzt werden. Wird ein
Satz nicht identifiziert, soll er als neuer Satz eingemischt
werden. Diese neuen Sätze landen in Datei cat_2.ald, was durch
die Option  -n2  ausgedrückt wird. Die Dateinummer kann zwischen
1 und 255 frei gewählt werden; sehr oft gibt es nur die 1.
Hinweis: Wenn ein Satz in transfer.alg doppelt vorkommt, und beide
haben wirklich denselben Schlüssel, bleibt nur der zweite übrig.
Ahnen Sie, warum?
Welche anderen Modusziffern es gibt und was man sonst noch beim
Einspeisen modifzieren kann, das werden Sie jetzt problemlos
aus dem Handbuch entnehmen können! Kap. 9, wie gesagt.

Hinweise für den Fall, daß es identische IdNummern in A und B gibt.

Man legt eine Variante von  i-1.apr  an, sagen wir  i-export.apr.
Es muß darin eine einzige zusaetzliche Zeile geben, und zwar diese:
/00
(Wo sie steht, ist unwichtig.)
Dann werden die IdNummern nicht mit exportiert und die Sätze erhalten
in Datenbank A neue, individuelle Nummern.
Im Schritt 2 ist dann also diese Datei zu wählen statt i-1.apr

Vorsicht ist auch geboten, wenn man nicht mit a99, sondern mit update
einspeist.
Bei jedem Modus außer -fm01 werden dabei identische Nummern zu einer
Fehlzuordnung führen. Solche Aufgaben sind denn doch eher was für
erfahrene allegrologen und lassen sich nicht in einer knappen Lektion
abhandeln - deshalb gibt es Kap. 9.