SQL Parser

Derzeit unterstützen die Treiber, die auf dem SQL-Parser basieren, nur Lesen per SQL SELECT-Statement.

SQL Syntax

eckige Klammern --> Optional

senkrechter Strich --> Alternativ

select

SELECT <expression-1> [ AS <identifier-1> ]
     , <expression-2> [ AS <identifier-2> ]
       ...
     , <expression-n> [ AS <identifier-n> ]
 [
   FROM <identifier>.FILES() | <identifier>[.<identifier>] [tableColumns] [tableOptions]
   [ WHERE <expression> ]
   [ FILTER <filter-text> ]
 ]

Es gibt folgende Varianten bei der Tabellenangabe:

Kein FROM-Abschnitt

Es wird keine Datei benötigt. Die Abfrage kehrt eine Zeile zurück und das Ergbnis sind die angegebenen Ausdrücke, die auf Konstanten basieren.

FROM <identifier>.FILES()

  • Der angegebene Identifier zeigt auf ein Verzeichnis.
  • Pro gefundener Datei liefert das Ergebnis eine Zeile.
  • Diese Sytax wird nur bei dateibasierten jdbc-Treibern unterstützt.

Die Metadaten der Pseudospalten können dann verwendet werden.

FROM <identifier>

  • Beim Excel Treiber ist diese Syntax nicht zulässig
  • Der angegebene Identifier zeigt auf eine csv/json-Datei, bzw. auf ein SalesForce Objekt.

In der Regel muss der Dateiname in doppelten Anführungsstrichen angegeben werden, da bereits das Punkt Zeichen für die Dateierweiterung nicht Teil eines nicht geschützen Identifiers ist.

FROM <identifier-1>.<identifier-2>

  • Beim csv und json Treiber wird der 1. Identifier ignoriert
  • Beim Excel Treiber gibt der 1. Identifier die Excel-Datei an.
  • Beim SalesForce Treiber ist der 1. Identifier das Schema.
  • Beim csv und json Treiber steht im 2. Identifier der Dateiname.
  • Beim Excel Treiber liefert der 2. Identifier den Namen des Arbeitsblattes.
  • Beim SalesForce Treiber ist der 2. Identifier das Objekt.

In der Regel muss der Dateiname in doppelten Anführungsstrichen angegeben werden, da bereits das Punkt Zeichen für die Dateierweiterung nicht Teil eines nicht geschützen Identifiers ist.

tableColumns

COLUMNS ( <identifier-1>, ... <identifier-n> ) [ HEADLINE <ganze Zahl> ]

Die optionale Angabe

HEADLINE <ganze Zahl>

können nur in den csv- und excel-Treibern verwendet werden.

tableOptions

in beliebiger Reihenfolge:

SEPARATED BY <Ein Zeichen in einfachen Anführungsstrichen>
QUOTED BY <Ein Zeichen in einfachen Anführungsstrichen>
ENCODING <Zeichenkette in einfachen Anführungsstrichen>

Wenn SEPARATED BY nicht angegeben wurde wird ein Komma verwendet.

Wenn QUOTED BY nicht angegeben wurde wird der doppelte Anführungsstrich verwendet.

Wenn ENCODING nicht angegeben wurde wird UTF-8 verwendet.

Identifier

Identifier werden für Tabellennamen, Spaltennamen in der Quelle oder als Alias verwendet.

Identifier in doppelten Anführungsstriche werden case-sensitiv behandelt und erlauben Sonderzeichen.

Identifier ohne doppelte Anführungszeichen werden in Kleinbuchstaben gewandelt.

Beim Vergleich von Spaltennamen in csv- und excel-Dateien zu den Spaltenüberschriften wird die Groß- und Kleinschreibung ignoriert (case insensitiv).

Konstanten

Zahlen

Konstante Zahlen sind vom Datentyp BIGINT. Sie sind ganzzahlig und haben einen Wertebereich von -263 bis 263-1.

Konstanten werden ausschließlich über eine Folge von Ziffern angegeben.

Zeichenketten

Zeichenketten können beliebig lang sein und haben den Datentyp VARCHAR.

Konstante Zeichenketten werden von einfachen Anführungsstrichen umschlossen.

Um einen einfachen Anführungsstrich in einer Zeichenkette zu erhalten, müssen zwei Anführungsstiche angegeben werden.

Zeichenketten können auch mehrzeilig sein.

SELECT 'Karens'' Backstube', '!hallo
Du da!';

Ausgabe

 column_1 column_2
-------- --------
Karens' Backstube !hallo
Du da!

Nullwert

NULL

Der Nullwert kann als Konstante über das Schlüsselwort NULL angegeben werden.

Wahr

TRUE

Der Wahrheitswert Wahr wird mit dem Schlüsselwort TRUE angegeben.

Falsch

FALSE

Der Wahrheitswert Falsch wird mit dem Schlüsselwort FALSE angegeben.

Pseudospalten

ROWNUMBER

Die Konstante ROWNUMBER entspricht der Datenzeile in der Quelle.

Wenn die optionale HEADLINE angegeben wurde, dann entspricht die 1. Zeilennumer der 1. Zeile nach der Kopfzeile. Ansonsten ist es die 1. Zeile in der Quelle.

Verzeichnisname

Nur bei dateibasierten jdbc-Treibern. Die Konstante DIRECTORY ist das Verzeichnis in dem die Datei liegt.

Dateiname

Nur bei dateibasierten jdbc-Treibern. Die Konstante FILENAME ist der Dateiname.

Expressions

Expressions sind Ausdrücke, die konstante Werte, Spaltenamen aus der Quelle, Pseudospalten, Operatoren, Fallunterscheidungen oder integrierte Funktion kombinieren können.

Statt einer Expression kann auch das Zeichen * angegeben werden. Dann ist kein Alias zulässig.

Die Prioritäten entsprechen ANSI-SQL.

Zur Veränderung der Priorität können Ausdrücke in runden Klammern gesetzt werden. Der Ausdruck innerhalb eines runde Klammernpaars wird vor den äußeren Operation berechnet.