Beim Importieren von Netzdaten aus Text-Tabellen oder beim Hinzufügen eines Layers mit XY-Werten werden Voreinstellungen des Betriebssystems verwendet, die je nach Dateinamenserweiterung ein gewisses Textformat erwarten. MIKE Urban legt im Verzeichnis der Textdateien eine Datei mit Namen schema.ini an, die diese Vorgaben wiederspiegelt.
In einzelnen Fällen kann es vorkommen, dass die Textdatei eine abweichende Struktur aufweist und der Import misslingt. In so einem Fall bearbeitet man die schema.ini und führt dann den Import erneut durch.
[MeineTextdatei.txt]
Für jede importierte Textdatei benötigt die schema.ini einen neuen Abschitt, erkennbar am Namen der Textdatei in eckigen Klammern.
Vermeiden Sie im Namen der Textdatei Sonderzeichen wie Leerzeichen, Umlaute oder Gleichheitszeichen, andernfalls werden Sie beim Importieren mit einer Fehlermeldung im Stile von "Selected item could not be added to the map" konfrontiert.
Format=TabDelimited
Die Felder sind durch Tabulatoren getrennt. Das ist das übliche Format, wenn man Daten zwischen der Textdatei und einem Tabellenkalkulationsprogrammen über die Zwischenablage austauscht.
Format=CSVDelimited
Die Felder sind durch eine Komma getrennt.
Format=Delimited(;)
Die Felder sind durch das in der Klammer stehende Zeichen getrennt, in diesem Fall ein Strichpunkt.
Format=FixedLength
Die Felder sind durch Leerzeichen ausgerichtet. Bei der Verwendung von FixedLength
müssen unbedingt Angaben zur Spaltenbreite gemacht werden .
DecimalSymbol="."
Numerische Felder verwenden das zwischen den Anführungszeichen stehende Zeichen als Dezimaltrennzeichen, in diesem Beispiel den Dezimalpunkt.
Beim Fehlen des Eintrags DecimalSymbol
wird der Standardwert aus der Windows-Systemsteuerung verwendet. Der Import läuft rascher ab, wenn das Dezimaltrennzeichen nicht definiert werden muss, wenn die Textdatei also den Windows-Einstellungen entspricht.
Standardmäßig wird der Feldname aus der ersten Zeile gelesen und das Feldformat anhand der ersten Datenzeilen ermittelt.
Wenn in der ersten Zeile keine Feldnamen stehen oder das Feldformat nicht richtig erkannt wird, kann man diese Angaben auch in die schema.ini schreiben.
So legen Sie fest, dass die erste Datenzeile keine Feldnamen enthält:
ColNameHeader=False
Gemeinsam mit der obigen Anweisung legen Sie die Feldformate fest. Sie müssen alle Felder ansprechen, den Feldnamen nennen und dann das Format nennen.
Col1=Feldname Typ [Width #]
Statt Col1 schreiben Sie, je nachdem um welche Spalte es sich handelt, Col1
, Col2
, Col3
usw.
Als Feldnamen verwenden Sie Kombinationen aus a-z, A-Z und 0-9. Verwenden Sie keine Leerzeichen 1).
Die häufigsten Typen sind:
Nur bei Char
(bzw. Text
) müssen Sie die Textlänge mit Width
festlegen.
Sehen Sie sich das Beispiel an.
Die Zeichenkodierung legt fest, wie der binären Dateiinhalt in lesbaren Text umgeformt wird.
Sie müssen den CharacterSet
nur angeben, wenn Umlaute und dergleichen nicht richtig importiert werden. ANSI ist der Vorgabewert. Mögliche Einstellungen sind:
CharacterSet=ANSI
CharacterSet=OEM
CharacterSet=UNICODE
Die folgende Datei heißt tabbeispiel.txt
:
x y z 301,31142 772,87487 33,786 303,85045 780,25859 34,107 304,82823 782,21016 34,115
Die schema.ini
muss folgenden Eintrag enthalten:
[tabbeispiel.txt] Format=TabDelimited DecimalSymbol=","
Die fogende Datei heißt csvbeispiel.txt:
x,y,z 301.31142,772.87487,33.786 303.85045,780.25859,34.107 304.82823,782.21016,34.115
Die schema.ini
muss folgenden Eintrag enthalten:
[csvbeispiel.txt] Format=CSVDelimited DecimalSymbol="."
Die folgende Datei spaltenbeispiel.txt enthält keine Feldnamen. Darüberhinaus wird die PunktID in der ersten Spalte ohne zusätzliche Anweisungen in der schema.ini irrtümlich als Zahlenformat verstanden, was in weiterer Folge dazu führt, dass der dritte Datensatz nicht gelesen wird2).
128,301.31142,772.87487,33.786 129,303.85045,780.25859,34.107 P130,304.82823,782.21016,34.115
Um die Feldnamen festzulegen und sicher zu stellen, dass die PunktID richtig gelesen wird, muss die schema.ini
folgende Einträge enthalten:
[spaltenbeispiel.txt] Format=CSVDelimited DecimalSymbol="." ColNameHeader=False Col1=PunktID Char Width 40 Col2=Rechts Float Col3=Hoch Float Col4=Deckel Float
Beachten Sie, dass Sie nicht nur die missverständlichen, sondern immer alle Felder definieren müssen.
Im Kapitel Initialisieren des Text-Datenquellentreibers der Microsoft Access 2003-Dokumentation ist die Syntax der schema.ini ausführlich dokumentiert.