Uploads für den Import von Legacy-Daten

Das Menü für Uploads erlaubt den Import von Daten aus anderen Datenbanksystemen. Diese müssen den Export einer Tabelle in eine Textdatei ermöglichen, so daß jede Zeile der Datenbank eine Zeile in der Textdatei erzeugt und eines der unter <Trenner für Spalten> aufgeführten Trennzeichen für die Trennung der Zellen genutzt wird. Liegt eine solche Textdatei auf einem lokalen Rechner vor, so kann das folgende Menü verwendet werden.

SuchenNeuer UploadSpeichernAbbruch



Hilfe
Übersicht  (0/0)
 < 1 > 
 +     (N)
Id
Upload-Datei
Upload-Name *
neuer Tabellenname
an Tabelle anhängen
Inhalt zuvor löschen *
Primärschlüsselspalte *
Index des PK
Spaltennamen in erster Zeile *
Trenner für Spalten *
Codepage *
Datums- und Zeitformat *
Dezimal-Symbol *
Währungssymbol *
Währungs-Format (+) *
Währungs-Format (-) *
Upload-Status *
Upload starten
Owner

Ein Upload besteht aus fünf Abschnitten:

1. Wählen Sie zunächst die Datei mit Hilfe des ersten Buttons von Ihrer lokalen Festplatte her aus. Der Button kann, in Abhängigkeit vom Browser, mit 'Durchsuchen...' (IE6), 'Browse' (Netscape) oder 'Choose' (Opera) benannt sein. Ferner können Sie einige Voreinstellungen wie 'Trenner für Spalten' festlegen. Dies ist jedoch nicht unbedingt notwendig.

2. Transferieren Sie die Daten anschließend einmalig (!) mit dem Button Upload von Ihrem PC zum Webserver.

3. Der Webserver analysiert die Daten mit Bezug auf die Voreinstellungen und zeigt die Namen der gefundenen Spalten sowie eine Vorschau an. Falls die erste Zeile der Datei nicht die Spaltennamen enthält, werden F1, F2, F3 usw. verwendet. Ferner werden die Daten bis zum Abschluß der eigentlichen Operation gecacht. Aus diesem Grund ist kein zweiter Upload mehr notwendig, auch wenn die Daten noch fehlerhaft zu sein scheinen.

Ist die Zahl der Spalten falsch oder wurde die unpassende Option bei 'Spaltennamen in erster Zeile' gewählt, so ändern Sie die Werte für

  • Spaltenname in erster Zeile
  • Trenner für Spalten
so lange, bis die Zahl der Spalten korrekt erkannt wurde. Zur Wiederholung der Analyse genügt es, auf den nach dem Datentransfer links eingeblendeten Namen des Uploads zu klicken. Im Augenblick taucht hier das 'N' (für 'Neu') auf.

Diese Erstanalyse wird immer wiederholt, falls einer der Menüpunkte zwischen <Spaltennamen in erster Zeile> und <Währungsformat (-)> geändert wurde.

Wenn die Zahl der Spalten mit der ursprünglichen, Ihnen bekannten Spaltenanzahl übereinstimmt, kann bsp. eine Darstellung wie folgt ausgegeben werden:

<-- Beginn der Menüdarstellung -->
SuchenNeuer UploadSpeichernAbbruch



Hilfe
Übersicht  (0/0)
 < 1 > 
 -    nwArtikel.txt - Upload (N)
   - Artikel-Nr (N)
   - Artikelname (N)
   - Lieferanten-Nr (N)
   - Kategorie-Nr (N)
   - Liefereinheit (N)
   - Einzelpreis (N)
   - Lagerbestand (N)
   - BestellteEinheiten (N)
   - Mindestbestand (N)
   - Auslaufartikel (N)
Id
Upload-Datei
Upload-Name *
neuer Tabellenname
an Tabelle anhängen
Inhalt zuvor löschen *
Primärschlüsselspalte *
Index des PK
Spaltennamen in erster Zeile *
Trenner für Spalten *
Codepage *
Datums- und Zeitformat *
Dezimal-Symbol *
Währungssymbol *
Währungs-Format (+) *
Währungs-Format (-) *
Upload-Status *
Upload starten
Owner

Artikel-NrArtikelnameLieferanten-NrKategorie-NrLiefereinheit (skipped)
1Chai1110 Kartons x 20 Beutel
2Chang1124 x 12-oz-Flaschen
3Aniseed Syrup1212 x 550-ml-Flaschen
<-- Ende der Menüdarstellung -->

Unterhalb des Upload-Namens werden alle gefundenen Tabellenspalten aufgelistet. Unterhalb der Maske werden bis zu zehn Zeilen Beispieldaten ausgegeben. Hier wurden weitere Spalten und Zeilen aus Gründen der Darstellung entfernt. Falls Sonderzeichen in den Spaltennamen oder den Daten nicht korrekt dargestellt werden, so muß dies an dieser Stelle ignoriert werden. Liegen die Sonderzeichen innerhalb einer Windows-Codepage, so kann deren Name unter <Codepage> ausgewählt werden. Handelt es sich um Unicode-Daten (UTF-8 oder UTF-16) mit BOM, so genügt 'Unicode' als Codepage.

4. Anschließend sollten Sie alle Einzelspalten durchsehen. Zu jeder in der Upload-Datei gefundenen Spalte steht ein Menü mit den folgenden Optionen bereit:

SuchenNeuer UploadSpeichernAbbruch



Hilfe
Übersicht  (0/0)
 < 1 > 
 -    nwArtikel.txt - Upload (N)
   - Artikel-Nr (N)
   - Artikelname (N)
   - Lieferanten-Nr (N)
   - Kategorie-Nr (N)
   - Liefereinheit (N)
   - Einzelpreis (N)
   - Lagerbestand (N)
   - BestellteEinheiten (N)
   - Mindestbestand (N)
   - Auslaufartikel (N)
Id
Spaltenname in der Datei *
neuer Spaltenname *
Spalte überspringen *
Datentyp *
Unicode-Import *
Position *

Wurde im Hauptmenü die Übernahme des Primärschlüssels gefordert, so wird die Primärschlüsselspalte umbenannt in <Tabellenname + ID>. Dies ist der interne Standardname für die Primärschlüsselspalte. Sind die Optionen im Hauptmenü korrekt, so werden die Datentypen in der Regel zuverlässig erkannt. Es gelten zwei Ausnahmen:

  • Integer-Spalten: Beginnen diese mit Werten > 1000, so kann dies als Datumsausdruck interpretiert werden. Dieser Fehler ist in der Vorschau sichtbar, falls die Zellen Werte enthalten.
  • Spalten mit Datentyp uniqueidentifier: Diese werden als Text interpretiert.
In beiden Fällen müssen die Einträge manuell geändert werden. Der Klick auf die aktuelle oder eine andere Spalte aktualisiert die Vorschau, so daß im ersten Fall die Änderung direkt sichtbar wird. Ferner kann pro Upload-Spalte ein geänderter Name vergeben, das Überspringen der Spalte oder der explizite Unicode-Import gefordert werden. Die letzte Option bedeutet, daß Upload-Dateien, die als UTF-8 oder UTF-16 vorliegen, zunächst per ODBC eingelesen werden, so daß die Spalten mit Textdaten oberhalb Ascii fehlerhaft sind. Sind die Spalten zum Unicode-Import markiert, so werden sie vom Datenbankserver anschließend per BCP-Import eingelesen, so daß Unicode-Zeichen korrekt interpretiert werden. Da nur der Datenbankserver diese Funktionalität bereitstellt und die Vorschau des Webservers nur ODBC nutzt, ist die Vorschau des Webservers von Unicode-Daten immer fehlerhaft.

Beachten Sie, daß jede Änderung in diesem Untermenü verworfen wird, wenn einer jener Werte aus dem Hauptmenü geändert wird, der die erneute Analyse der Spalten auslöst.

Diese Upload-Phase (4) wird abgeschlossen, indem der Upload entweder per <Abbruch> verworfen oder gespeichert wird.

5. 'Speichern' heißt zunächst nur, daß die festgelegten Daten des Haupt- und der Untermenüs in Systemtabellen gesichert werden und so zur späteren wiederholten Verwendung und zur Vergabe von Berechtigungen zur Verfügung stehen. Falls der Upload gestartet werden soll und sein Status 'aktiv' ist, startet das Speichern gleichzeitig den Upload. Ansonsten wird die Upload-Datei gelöscht. Der Webserver prüft die Start-Berechtigung des Nutzers für diesen Upload, ferner darf pro Datenbank nur ein Upload aktiv sein. Falls diese Bedingungen erfüllt sind und eine weitere Aktion auf der Benutzermaske ausgeführt wird, blendet das System für etwa eine Minute eine kurze Meldung über den erfolgreichen Start ein. Im Fehlerfall wird ebenfalls eine Meldung erzeugt. Nach dem Start eines Uploads sollte der Nutzer bsp. neu nach Uploads suchen, um die Meldung sichtbar zu machen. Der aktive Upload wird mit einem '(A)' gekennzeichnet. Die Daten werden, eventuell in mehreren Einheiten, vom Webserver zum Datenbankserver transportiert. Anschließend lädt der Datenbankserver die Daten, erstellt die eventuell benötigte Tabelle und kopiert die Daten aus einer temporären Tabelle in die Tabelle der Kundendatenbank.

Falls alle diese Aktionen erfolgreich sind, wird der A-Status des Uploads wieder zurückgesetzt. Im Fehlerfall wird der Upload mit '(F)' ausgegeben, ein Klick auf den Hauptdatensatz zeigt Details an. Erst dann ist dieser Upload abgeschlossen.

Beim erneuten Verwenden eines Uploads genügt es, das Hauptmenü aufzurufen, diesen Datensatz auszuwählen, die Datei hochzuladen und zu speichern. Wird an den Einstellungen nichts geändert, so wird der Zustand des Datensatzes nach dem Upload als 'blau' signalisiert (  ). Ein Nutzer, der lediglich die Execute-Berechtigung für diesen Upload besitzt, kann den Upload durch 'Speichern' starten. Wurden keine Daten geändert, so werden die Metainformationen für diesen Upload nicht an die Datenbank gesandt. Folglich wird die Editierberechtigung dieses Nutzers nicht geprüft und kann deshalb keinen Abbruch erzeugen. Beim anschließenden Upload-Start (für 'Upload starten' und 'Upload aktiv') wird die Berechtigung ohnehin überprüft.

Sicherheit

Für die Erstellung von Uploads ist entweder das globale Recht zum Erstellen von Objekten oder das spezifische Recht zum Erstellen von Uploads notwendig. Anschließend kann einer Gruppe das Execute-Recht für diesen Upload eingerichtet werden. Beim Ausführen des Uploads wird zunächst die Execute-Berechtigung des Nutzers geprüft, welcher den Upload gestartet hat. Anschließend wird für den Upload-Besitzer geprüft, ob dieser entweder die neue Tabelle erstellen oder in der vorhandenen Tabelle Daten hinzufügen bzw. löschen kann. Für diese Konzeption gibt es zwei gegensätzliche Motive:
  • Berechtigung für einen Nutzer, regelmäßig Uploads durchzuführen: Falls in eine Tabelle regelmäßig Daten aus einem Altsystem eingespielt werden sollen, so kann ein Administrator einen geeigneten Upload (mit 'an Tabelle anhängen') erstellen und einem Nutzer die Ausführungsberechtigung für den Upload erteilen. Damit kann der Nutzer diesen Upload regelmäßig durchführen, ohne daß er selbst die Editierberechtigung für diese Tabelle benötigt oder - absichtlich oder unabsichtlich - die Optionen verändert und bsp. versehentlich die bereits importierten Daten löscht ('Inhalt zuvor löschen').

    Der Administrator kann den Uploadstatus auf 'inactive' setzen und den Datensatz nur speichern, ohne einen Upload durchzuführen. Dann kann dieser Upload nicht mehr genutzt werden, alle anderen Einstellungen bleiben jedoch erhalten.

  • Verhinderung einer destruktiven Kooperation zweier Nutzer mit geringen Rechten: Würde die Sicherheitsprüfung für das Erstellen oder Bearbeiten der Tabelle mit den Rechten des interaktiven Nutzers durchgeführt, so wäre die folgende, destruktive Kooperation denkbar: Ein Nutzer mit dem Recht, Uploads zu erstellen sowie dem fehlenden Recht zur Erstellung bzw. Bearbeitung von Tabellen erstellt einen Upload und erteilt einem Nutzer mit Berechtigung, Daten zu bearbeiten, das Upload-Recht. Dieser Nutzer führt den Upload aus und kann damit den Inhalt einer Tabelle mit einem einzigen Upload löschen, wohingegen die manuelle Ausführung von Löschaktionen (Zeile um Zeile) weitaus aufwendiger wäre.

    Da das Recht des Besitzers geprüft wird, benötigt dieser sowohl das Recht zum Erstellen von Uploads als auch die entsprechenden Rechte an Tabellen, so daß eine solche kreuzweise Verwendung zweier schwächerer Accounts unschädlich bleibt.

Hinweise

Typische Fehler

Das als Dezimal-Symbol verwendete Zeichen kann nicht gleichzeitig Spaltentrenner sein. Quelldaten mit dem Komma als Dezimal-Symbol müssen deshalb ein anderes Zeichen als Spaltentrenner nutzen.

Erstellt ein bereits einmal ausgeführter Upload eine neue Tabelle und wird dieser Upload wiederholt, so muß entweder ein neuer Tabellenname angegeben werden oder der Typ auf <an Tabelle anhängen> geändert werden. Ersatzweise kann die Tabelle im Menü 3 gelöscht werden. Ansonsten scheitert der Upload, da die Tabelle bereits existiert.

Falls ein in den ersten Zeilen der Quelldatei fehlender Spaltentrenner angegeben ist, wird die ganze Zeile als eine einzige Zelle interpretiert. Die Zahl der Spalten ist damit falsch. Wurde für den Primärschlüssel die Option <use existing Row> verwendet, erscheint eine Fehlermeldung:

Die als Primärschlüssel angegebene Spalte muß vom Typ Integer sein.
Eine in bezug auf den Datentyp nicht eindeutige Spalte wird immer als Textspalte interpretiert, dies widerspricht der Standardverwendung von Int-Zahlen für Primärschlüssel. Diese Fehlermeldung kann ignoriert werden, falls sie bei der korrekten Ermittlung der Zeilenzahl verschwindet.

Falls eine Tabelle erfolgreich importiert wurde und der Primärschlüssel übernommen wurde, führt eine Wiederholung des Imports in dieselbe Tabelle ohne vorheriges Löschen zu einem Fehler: Die Primärschlüssel sind dupliziert. Der Datenbankserver überprüft dieses Problem vor der tatsächlichen Ausführung des Imports und weist die Daten im Vorfeld zurück.

Falls die Zieltabelle Fremdschlüsselspalten (also Detailspalten von Relationen) oder Constraints nutzt, kann ein Import aufgrund von Fremdschlüsseleinschränkungen oder Constraintsverletzungen scheitern. In solchen Fällen können Relationen und Constraints deaktiviert (nicht gelöscht) werden. Dies ermöglicht einen Import, so daß nicht der Upload wiederholt ausgeführt werden muß. Anschließend können die Daten über die normale Bearbeitung korrigiert und die Einschränkungen wieder aktiviert werden.

Sonstige Hinweise

Aus den Definitionen des Hauptmenüs wird eine schema.ini-Datei erstellt, auf welche der ODBC-Datenimport zugreift. Obwohl die Regeln für diese Datei eigentlich relativ scharf sind, hat sich der Upload als vergleichsweise stabil gegenüber fehlerhaften Angaben zum Währungszeichen und zum Währungsformat erwiesen. Eine Datei mit €-Zeichen wurde korrekt interpretiert, falls als Währungssymbol ein einzelner Buchstabe sowie ein fehlerhaftes Format ($1 statt 1 $) angegeben wurde.


Link zur hiesigen Seite als QR-Code

Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2023 Jürgen Auer, Berlin.