Page Title

Der Wiki wird derzeit überarbeitet: neue URL, neues Design, neue Inhalte!

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mikeurban:anleitungen:schema_ini

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

mikeurban:anleitungen:schema_ini [2016/05/18 14:32] (aktuell)
julian Seitename wurde von mikeurban:schema_ini auf mikeurban:anleitungen:schema_ini geändert
Zeile 1: Zeile 1:
 +====== Konfiguration des Textimports mit schema.ini ======
  
 +Beim [[mikeurban:​anleitungen:​import_ascii|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 ====
 +
 +<code ini>
 +[MeineTextdatei.txt]
 +</​code>​
 +
 +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 ====
 +
 +
 +<​code>​
 +Format=TabDelimited
 +</​code>​
 +
 +Die Felder sind durch Tabulatoren getrennt. Das ist das übliche Format, wenn man Daten zwischen der Textdatei und einem Tabellenkalkulationsprogrammen über die Zwischenablage austauscht.
 +
 +<​code>​
 +Format=CSVDelimited
 +</​code>​
 +
 +Die Felder sind durch eine Komma getrennt.
 +
 +<​code>​
 +Format=Delimited(;​)
 +</​code>​
 +
 +Die Felder sind durch das in der Klammer stehende Zeichen getrennt, in diesem Fall ein Strichpunkt.
 +
 +<​code>​
 +Format=FixedLength
 +</​code>​
 +
 +Die Felder sind durch Leerzeichen ausgerichtet. Bei der Verwendung von ''​FixedLength''​ müssen unbedingt Angaben zur Spaltenbreite gemacht werden FIXME.
 +
 +==== Dezimaltrennzeichen ====
 +
 +<code ini>
 +DecimalSymbol="​."​
 +</​code>​
 +
 +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:
 +
 +<code ini>
 +ColNameHeader=False
 +</​code>​
 +
 +Gemeinsam mit der obigen Anweisung legen Sie die Feldformate fest. Sie müssen alle Felder ansprechen, den Feldnamen nennen und dann das Format nennen.
 +
 +
 +<code ini>
 +Col1=Feldname Typ [Width #]
 +</​code>​
 +
 +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 ((Wenn Sie unbedingt Leerzeichen verwenden wollen, müssen Sie den Feldnamen unter Anführungszeichen setzen)).
 +
 +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 [[#​Festlegung_der_Feldeigenschaften|Beispiel]] an.
 +
 +
 +==== Zeichenkodierung ====
 +
 +Die [[http://​www.joelonsoftware.com/​articles/​Unicode.html|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:
 +
 +<code ini>
 +CharacterSet=ANSI
 +</​code>​
 +
 +<code ini>
 +CharacterSet=OEM
 +</​code>​
 +
 +<code ini>
 +CharacterSet=UNICODE
 +</​code>​
 +
 +
 +===== Beispiele =====
 +
 +==== Tabulator-getrennte Datei mit Dezimalkomma ====
 +
 +Die folgende Datei heißt ''​tabbeispiel.txt'':​
 +
 +<​code>​
 +x y z
 +301,​31142 772,​87487 33,​786
 +303,​85045 780,​25859 34,​107
 +304,​82823 782,​21016 34,​115
 +</​code>​
 +
 +Die ''​schema.ini''​ muss folgenden Eintrag enthalten:
 +
 +<code ini>
 +[tabbeispiel.txt]
 +Format=TabDelimited
 +DecimalSymbol=","​
 +</​code>​
 +
 +==== Komma-getrennte Datei mit Dezimalpunkt ====
 +
 +Die fogende Datei heißt csvbeispiel.txt:​
 +
 +<​code>​
 +x,y,z
 +301.31142,​772.87487,​33.786
 +303.85045,​780.25859,​34.107
 +304.82823,​782.21016,​34.115
 +</​code>​
 +
 +Die ''​schema.ini''​ muss folgenden Eintrag enthalten:
 +
 +<code ini>
 +[csvbeispiel.txt]
 +Format=CSVDelimited
 +DecimalSymbol="​."​
 +</​code>​
 +
 +
 +==== 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 wird((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.)).
 +
 +<​code>​
 +128,​301.31142,​772.87487,​33.786
 +129,​303.85045,​780.25859,​34.107
 +P130,​304.82823,​782.21016,​34.115
 +</​code>​
 +
 +Um die Feldnamen festzulegen und sicher zu stellen, dass die PunktID richtig gelesen wird, muss die ''​schema.ini''​ folgende Einträge enthalten:
 +
 +<code ini>
 +[spaltenbeispiel.txt]
 +Format=CSVDelimited
 +DecimalSymbol="​."​
 +ColNameHeader=False
 +Col1=PunktID Char Width 40
 +Col2=Rechts Float
 +Col3=Hoch Float
 +Col4=Deckel Float
 +</​code>​
 +
 +Beachten Sie, dass Sie nicht nur die missverständlichen,​ sondern immer //alle// Felder definieren müssen.
 +
 +
 +===== Ausführliche Referenz =====
 +
 +Im Kapitel [[http://​office.microsoft.com/​de-de/​access-help/​initialisieren-des-text-datenquellentreibers-HP001032166.aspx|Initialisieren des Text-Datenquellentreibers]] der Microsoft Access 2003-Dokumentation ist die Syntax der schema.ini ausführlich dokumentiert.
mikeurban/anleitungen/schema_ini.txt · Zuletzt geändert: 2016/05/18 14:32 von julian