Page Title

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mikeurban:anleitungen:schema_ini

Konfiguration des Textimports mit schema.ini

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.

Syntax

Dateiname

[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.

Dateiformat

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 FIXME.

Dezimaltrennzeichen

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.

Feldeigenschaften

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:

  • Char (identisch mit Text)
  • Float (identisch mit Double)
  • Integer (identisch mit Short)

Nur bei Char (bzw. Text) müssen Sie die Textlänge mit Width festlegen.

Sehen Sie sich das Beispiel an.

Zeichenkodierung

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

Beispiele

Tabulator-getrennte Datei mit Dezimalkomma

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=","

Komma-getrennte Datei mit Dezimalpunkt

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="."

Festlegung der Feldeigenschaften

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.

Ausführliche Referenz

Im Kapitel Initialisieren des Text-Datenquellentreibers der Microsoft Access 2003-Dokumentation ist die Syntax der schema.ini ausführlich dokumentiert.

1)
Wenn Sie unbedingt Leerzeichen verwenden wollen, müssen Sie den Feldnamen unter Anführungszeichen setzen
2)
Der Treiber liest die erste Zeile, um zu ermitteln, um welchen Datentyp es sich handelt. Man könnte den Rechner so konfigurieren, dass er die ersten 10 oder 100 Zeilen liest, aber damit verschiebt sich das Problem eventuell nur weiter nach unten.
mikeurban/anleitungen/schema_ini.txt · Zuletzt geändert: 2016/05/18 14:32 von julian