Text Dateien

Ermöglicht den Direktzugriff auf Tabellendaten in Textdateien, die trennzeichen-getrennte Werte enthalten und in der ersten Zeile die Spaltenüberschriften definieren.

Typische Vertreter sind z.B. CSV Dateien.

Sind Spalten mit Rechts/Hochwert Angaben enthalten, dann können diese zur Bildung einer Punkt - Geometrie verwendet werden.

Abfragen mittels GeoSQL sind möglich.

Argumente

Typname: Textfile

  • fileName: Der Name der Datei, absolut oder relativ

  • quickLoad (false): BBox etc. nicht ermitteln

  • geomXValueColumnName (leer): Name der Spalte, die als X - Wert für Bildung einer Punktgeometrie verwendet werden soll.

  • geomYValueColumnName (leer): Name der Spalte, die als Y - Wert für Bildung einer Punktgeometrie verwendet werden soll.

  • autoDetectGeomColumns (true): wenn geomX/YValueColumnName nicht angegeben ist, dann automatische Ermittlung probieren, z.Z. folgende Namen-Paare (in dieser Reihenfolge):

    • RECHTSWERT/HOCHWERT,
    • RECHTS/HOCH,
    • CoordX/CoordY,
    • GeoX/GeoY,
    • X/Y,
    • LONGITUDE/LATITUDE,
    • LON/LAT,
    • LONG/LAT

    Es werden nur Spalten betrachtet, die als Datentyp double erkannt wurden.

  • columnSeparator (0): Das Spaltentrennzeichen, wenn nicht angegeben, dann aus der Kopfzeile automatisch ermitteln. Das Trennzeichen muss genau ein Zeichen sein (Für Tab kann alternativ auch "\t" angegeben werden).

  • decimalSeparatorMode (AutoDetectdDecimalSeparator): Behandlung des Dezimaltrennzeichen, einer der Werte:

    • AutoDetectdDecimalSeparator: identisch mit CommaDecimalSeparator

    • CommaDecimalSeparator: Punkt durch Komma ersetzen, wenn der Wert genau dem Schema [1-9].[0-9] entspricht.

    • PointDecimalSeparator: Keine Ersetzung, die Double Daten liegen mit Punkt als Dezimaltrenner

  • epsgCode (0): optionaler EpsgCode, sonst wie gehabt aus den Daten "geschätzt"

Ladevorgang

Der Zugriff auf die Datei läuft immer wie folgt ab:

  • Ermitteln des Encodings (BOM auswerten, wenn definiert).
  • Einlesen der 1. Zeile als Spalteninformationen.
  • In der ersten Zeile: Separator ermitteln, wenn dieser nicht angegeben wurde (Semikolon, Komma oder Tab, dürfen nicht gemischt vorkommen).
  • Einlesen der nächsten 500 Zeilen zur Ermittlung der Datentypen
    • Zahlen werden immer als Double interpretiert
    • der Rest wird zu Text

Sind geomYValueColumnName und geomXValueColumnName (entweder beide leer oder beide vorhanden), wird eine Pseudospalte mit dem Namen "geom" eingefügt.

Alle Spaltennamen werden eindeutig gemacht, eckige Klammern entfernt.

Beispiel

{
"Csv1": {
   "type": "Textfile",
   "fileName":"d:\\temp\\test.csv",
   "geomXValueColumnName":"Rechts",
   "geomYValueColumnName":"Hoch",
   "quickLoad":false
  }
}

Implementierungsdetails / Features und Einschränkungen

Die Ermittlung der Datentypen auf Basis der ersten n Zeilen kann für folgende Zeilen Fehler bringen (typischerweise ... erkannt wurde "Double", dann folgt später in dieser Spalte doch ein Text).

Bei Zahlenformaten wird als Dezimaltrennzeichen ein Punkt angenommen. Wenn decimalSeparatorMode auto oder Point ist, dann werden Komma zu Punkt ersetzt, wenn der Wert sonst keine weiteren Nicht-Ziffer-Zeichen enthält (ausgenommen führendes Minus).

Texte in doppelten Anführungszeichen werden unterstützt (Anführungszeichen in einem Text sind durch zwei aufeinanderfolgende doppelte zu maskieren).

Umbrüche in Texten werden derzeit nicht unterstützt. Die Texte müssen dabei in Anführungszeichen eingeschlossen sein.

Eine Indizierung erfolgt nicht, alle Zugriffe sind immer sequentiell, d.h. bei der Verwendung sehr großer Dateien sind entsprechende Laufzeiten zu erwarten.

Importieren Sie die Daten in solchen Fällen besser in eine richtige Datenbank.

Encoding UTF16 wird derzeit nicht unterstützt (wird praktisch keine Rolle spielen, kann bei Bedarf angepasst werden).

Es werden nur Formate mit einheitlichem Trennzeichen unterstützt, d.h. kein Format mit festen Längen pro Spalte.

Der Wert "#WERT!" wird als NULL behandelt.


Zuletzt geändert: 13.03.2024 12:40:13 (erstmals erstellt 13.10.2017)