====== 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 ==== [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 ((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: 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 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.)). 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 [[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.