Freie DatenBank

Daten von anderen Knoten importieren

Anlegen der Tabellen NETZ und NEUEDATEN

Zu diesem Zweck werden zwei neue Tabellen mit dem Namen NEUEDATEN und NETZ in der Datenbank FDB angelegt. Dazu dienen die folgenden SQL-Befehle, die der Benutzer root ausführen muss:  (SQL-Befehle herunterladen)

SQL-Befehle knoten.create

#Version 2
CONNECT FDB;
CREATE TABLE NEUEDATEN (SKZ INT NOT NULL, LAND CHAR(1) NOT NULL,
   NAME VARCHAR(130) NOT NULL, STRASSE VARCHAR (40),
   PLZ SMALLINT NOT NULL, ORT VARCHAR (30) NOT NULL,
   EMAIL VARCHAR (50), URL VARCHAR (70),
   TYP1 CHAR (2) NOT NULL, TYP2 CHAR (2), TYP3 CHAR (2),
   TEST SMALLINT NOT NULL, TESTDATUM DATE NOT NULL,
   NEU SMALLINT NOT NULL, NEUDATUM DATE NOT NULL,
   KNOTEN INTEGER UNSIGNED, KOMMENTAR VARCHAR(130),
   NAME2 VARCHAR (130), URL2 VARCHAR (70),
   EMAIL2 VARCHAR (50), TEST2 SMALLINT NOT NULL);
CREATE TABLE NETZ (NAME VARCHAR(50) NOT NULL,
  URL VARCHAR (70) NOT NULL, EMAIL VARCHAR (40),
  KNOTEN INTEGER UNSIGNED NOT NULL, AUTO SMALLINT DEFAULT 0,
  STATUS SMALLINT DEFAULT 1, KOMMENTAR VARCHAR(70),
  IMNETZSEIT DATE NOT NULL, KONTAKTDATUM DATE NOT NULL);
ALTER TABLE NETZ ADD PRIMARY KEY(KNOTEN);

SQL-Befehle knoten.import

CONNECT FDB;
INSERT INTO NETZ VALUES
  ('Pädagogisches Institut für NÖ in Hollabrunn',
  'www.pinoe-hl.ac.at','herwig.reidlinger@pinoe-hl.ac.at',
  '3249202957','1','1','','1999-10-01','1999-10-01');
INSERT INTO NETZ VALUES
  ('Erzbischöfliches Gymnasium in Hollabrunn',
  'www.ebgymhollabrunn.ac.at',
  'herwig.reidlinger@ebgymhollabrunn.ac.at',
  '3249197373','1','0','','1999-10-01','1999-10-01');

Es genügt, wenn Sie in Ihre Tabelle NETZ nur die aktiven Knoten aufnehmen. Derzeit existiert nur ein aktiver Knoten: www.pinoe-hl.ac.at.

SQL-Befehle zum Herunterladen

Die SQL-Befehle müssen Sie nicht händisch eingeben. Sie sind in einer Datei gespeichert und können heruntergeladen werden:

SQL-Befehle herunterladen: Datei knoten.tgz (entpacken mit tar)
gepackte Dateien: knoten.create, knoten.import, knoten.var1

Der Benutzer root kann unter Linux mit den Befehlen:

mysql -prootpasswort <knoten.create
mysql -prootpasswort <knoten.import

die Tabellen anlegen und die Daten importieren.

Wenn Sie vor dem 1. Juni 2000 die Tabelle NEUEDATEN in der Version 1 angelegt haben, dann können Sie mit dem Befehl

mysql -prootpasswort <knoten.var1

auf die Version 2 erweitern. Die Datei knoten.var1 enthält folgende SQL-Befehle:

CONNECT FDB;
ALTER TABLE NEUEDATEN
CHANGE EMAIL EMAIL VARCHAR (50);
ALTER TABLE NEUEDATEN
CHANGE LEER1 NAME2 VARCHAR (130);
ALTER TABLE NEUEDATEN
CHANGE LEER2 URL2 VARCHAR (70);
ALTER TABLE NEUEDATEN
CHANGE LEER3 EMAIL2 VARCHAR (50);
ALTER TABLE NEUEDATEN
ADD TEST2 SMALLINT NOT NULL;

Daten in der Tabelle NETZ verändern

Mit dem hier beschriebenen PHP3-Skript können Sie die Tabelle NETZ über das WWW warten. Im Skript greift der Benutzer FDBADMIN auf die Tabelle SCHULEN zu.
Laden Sie dann folgende Datei herunter:

PHP3-Skript herunterladen: Datei fdbnetz.php3.tgz (entpacken mit tar)
gepackte Datei: fdbnetz.php3

Die Datei fdbnetz.php3 kann in ein beliebiges Verzeichnis kopiert werden, in dem sich die WWW-Seiten befinden. Zusätzlich sollte der Web-Server so konfiguriert werden, dass der Zugriff auf diese HTML-Seite nur vom Administrator der Tabelle SCHULEN möglich ist. (Z. B. nur vom lokalen Netz.)
Ändern Sie in dieser Datei den Wert von $ipknoten, damit Ihre Änderungen eindeutig im Datenbanknetz Schulen identifiziert werden können. Eine Beschreibung für die Berechnung dieses Wertes aus Ihrer IP-Adresse finden Sie bei den Informationen über die Datenbankstruktur.

# 193*256*256*256 + 170*256*256 + 231*256 + 13
$ipknoten = 3249202957;

Bedeutung der Felder der Tabelle NETZ

NAME Name des Knotenbetreibers
URL Internet-Adresse des Knotens
EMAIL E-Mail Adresse des Knoten-Administrators
KNOTEN Eindeutige Knotennummer gebildet aus der IP-Adresse des Rechners
AUTO 1 = Daten automatisch aktualisieren; 0 = Daten händisch aktualisieren
STATUS 1 = Knoten ist aktiv; 0 = Knoten ist passiv, nicht abfragen
KOMMENTAR Bemerkungen
IMNETZSEIT Datum, seit wann Rechner im Datenbanknetz SCHULEN ist
KONTAKTDATUM Datum, wann von dem Rechner zuletzt Daten geholt wurden

Import der Daten von anderen Servern

Mit dem folgenden Perl-Skript können Sie die Daten von einem anderen Server abfragen und in die Tabelle NEUEDATEN speichern
Es müssen dazu die Perl-Module für MySQL installiert sein. In der SuSE-Distribution 6.4 finden Sie es in der Serie pay unter dem Namen mysqlperl.
Laden Sie dann folgende Datei herunter:

Perl-Skript herunterladen: Datei schulimport.tgz (entpacken mit tar)
gepackte Datei: schul_import.perl, schul_update.perl

Damit diese Skripts verwendet werden können, muss in MySQL ein Benutzer FDBADMIN existieren. Sein Passwort muss in einer Textdatei mit dem Namen init.dat gespeichert sein. (Die Datei init.dat wird mit einem Editor angelegt und besteht nur aus einer einzigen Zeile mit dem Passwort. Die Datei init.dat muss im selben Verzeichnis wie die Datei schul_import.perl und schul_update.perl gespeichert werden.) Als Benutzer root kann mit dem Befehl

chmod 600 init.dat

das Lesen und Schreiben nur für den Benutzer root gestattet werden.
Das Perl-Skript schul_import.perl wird mit dem Befehl

perl schul_import.perl

gestartet. Von diesem Skript werden alle aktiven Server, die in der Tabelle NETZ gespeichert sind abgefragt, ob sie seit der letzten Abfrag neue Daten in der Tabelle SCHULEN gespeichert haben. Diese neuen Daten werden in der Tabelle NEUEDATEN gespeichert! Danach wird in der Tabelle NETZ im Feld KONTAKTDATUM das aktuelle Datum gespeichert. Das Perl-Skript schul_import.perl sollte nur einmal pro Tag gestartet werden. Da die Aktualisierung der Daten datumsgesteuert erfolgt, sollte die Abfrage täglich in der Zeit von 23.00 - 23.45 (Lokalzeit) erfolgen. Alle aktiven Server, die an dem Datenbanknetz SCHULEN teilnehmen und anderen Servern ihre Daten zur Verfügung stellen, dürfen in der Zeit von 23.00 - 23.45 (Lokalzeit) keine Veränderungen der Tabelle SCHULEN vornehmen.
Dieses Perl-Skript führt eine Logdatei mit dem Namen fdbimport.log. Außerdem werden in der Datei knoten.tmp alle Server gespeichert, die von dem Skript aufgerufen wurden. Die neuen Daten, die auf diesen Servern gefunden wurden, werden in der Datei daten.tmp gespeichert. Durch jeden neuen Aufruf des Skripts werden die alten Dateien  knoten.tmp und daten.tmp gelöscht.
Das Perl-Skript schul_update.perl wird mit dem Befehl

perl schul_update.perl

gestartet. Von diesem Skript werden die Daten aus der Tabelle NEUEDATEN in die Tabelle SCHULEN übernommen. Die alten Daten werden einfach überschrieben und in einer Logdatei mit dem Namen fdbupdate.log gespeichert. Dieses Perl-Skript darf von alle aktiven Server, die an dem Datenbanknetz SCHULEN teilnehmen immer erst nach Mitternacht gestartet werden, da in der Zeit von 23.00 - 23.45 (Lokalzeit) keine Veränderungen der Tabelle SCHULEN vorgenommen werden dürfen.
Folgendes Zeitschema wird empfohlen:

Daten von anderen Servern importieren   Daten automatisch aktualisieren Daten händisch aktualisieren 
23.00 - 23.45 00.00 - 06.00 06.00 - 23.00
Daten werden in Tabelle NEUEDATEN gespeichert Daten von Tabelle NEUEDATEN in Tabelle SCHULEN übernehmen Daten händisch in Tabelle SCHULEN eingeben.

Beide Skripts unterstützen in der derzeitigen Version noch nicht das Feld AUTO in der Tabelle NETZ. In einer zukünftigen Version soll auch mit einem PHP3-Skript die Möglichkeit zur händischen Übernahme der Daten von der Tabelle NEUEDATEN in die Tabelle SCHULEN ermöglicht werden.

FDB-Projekt Datenbanknetz SCHULEN Niederösterreichischer Bildungsserver

Letzte Änderung am 04. September 2001 E-Mail herwig.reidlinger@pinoe-hl.ac.at.