Formatieren

Das Formatieren hilft dabei, SQL lesbar und konsistent über mehrere Transformationen hinweg zu halten.

Im Edit Action Dialog kann die aktuelle SQL-Anweisung über die Format-Aktion (Rechtsklick 'Format' oder Shortcut 'Alt + Shift + F') formatiert werden.

datasqill unterstuetzt zwei Formatter-Modi:

  • Interner Formatter (Default)
    Verwendet die integrierte SQLinForm-Bibliothek. Die Formatierungsoptionen werden aus der View tv_sqts_config_global mit den Schlüsseln GUI / CONFIG / FORMATTER / SQL gelesen.

  • Externer Formatter (optional)
    Startet ein externes Kommando aus dem Suchpfad (PATH). Der Provider wird über GUI / CONFIG / FORMATTER / PROVIDER in der View tv_sqts_config_global konfiguriert.

Beispiel für eine externe Provider-Konfiguration (stdin → stdout):

{
  "provider": "external",
  "command": "myformatter.exe",
  "input": "stdin",
  "output": "stdout",
  "args": [],
  "timeoutMs": 10000,
  "fallbackToEmbedded": true
}

Der externe Formatter muss im Suchpfad (PATH) liegen, damit die datasqill GUI ihn finden und aufrufen kann.

Für externe Formatter können Ein- und Ausgabe konfiguriert werden:

  • input: stdin oder file
  • output: stdout oder file

In args können Platzhalter für temporäre Dateien verwendet werden:

  • {inputFile} für die Eingabedatei
  • {outputFile} für die Ausgabedatei

Unterstützte Varianten:

input output args (Beispiel)
stdin stdout []
file stdout ["--input", "{inputFile}"]
stdin file ["--output", "{outputFile}"]
file file ["--input", "{inputFile}", "--output", "{outputFile}"]

Bei input=file muss {inputFile} in args vorkommen. Bei output=file muss {outputFile} in args vorkommen. Die konkreten Argumente (--input, --output usw.) müssen zur CLI des externen Tools passen.

Beispiel für file → stdout (z. B. wenn das Tool eine Eingabedatei erwartet):

{
  "provider": "external",
  "command": "myformatter.exe",
  "input": "file",
  "output": "stdout",
  "args": ["--input", "{inputFile}"],
  "timeoutMs": 10000,
  "fallbackToEmbedded": true
}

Verhalten bei Problemen mit dem externen Formatter:

  • Falls fallbackToEmbedded auf true steht, fällt datasqill auf den internen Formatter zurück.
  • Falls fallbackToEmbedded auf false steht, schlägt das Formatieren fehl und es wird eine Fehlermeldung angezeigt (inkl. Exit-Code und stderr-Auszug, sofern verfügbar).

Das Formatieren läuft im Hintergrund, damit die GUI responsiv bleibt. Werden während der Formatierung Änderungen am SQL-Code vorgenommen, wird das Ergebnis der Formatierung verworfen und nicht eingesetzt.