read_lines

Zeilenbasierte Textdateien mit Zeilennummern und effizienter Teilextraktion lesen. Unterstützt Glob-Muster, Zeilenauswahl und Kontextzeilen um Treffer.

Maintainer: teaguesterling

Installation und Laden

INSTALL read_lines FROM community;
LOAD read_lines;

Beispiel

-- Read all lines from a file
SELECT * FROM read_lines('server.log');
-- Read specific lines (positional argument)
SELECT * FROM read_lines('server.log', '100-200');
-- Read lines with context around matches
SELECT * FROM read_lines('error.log', 42, context := 3);
-- Path-embedded line selection
SELECT * FROM read_lines('error.log:42 +/-3');
-- Last 10 lines (from-end syntax)
SELECT * FROM read_lines('app.log', '+10-');
-- Glob pattern to read from multiple files
SELECT * FROM read_lines('logs/*.log')
WHERE content LIKE '%ERROR%';
-- Parse lines from a string
SELECT * FROM parse_lines('line1
line2
line3');

Über read_lines

Die Erweiterung read_lines stellt Funktionen zum Lesen zeilenbasierter Textdateien bereit, mit präziser Kontrolle darüber, welche Zeilen extrahiert werden.

Funktionen:

  • read_lines(path) - Alle Zeilen aus Datei(en) lesen, mit Glob-Unterstützung
  • read_lines(path, lines[, trim]) - Ausgewählte Zeilen lesen (Positionsargumente)
  • read_lines_lateral(path[, lines[, trim]]) - Lateral-Join-Variante für Dateipfade aus Tabellenspalten
  • parse_lines(text, ...) - Zeilen aus einer Zeichenkette parsen

Quellen dürfen nicht seekbar sein (Pipes/Streams, z. B. shellfs-Befehle), einschließlich zeilenweiser Befehle in einem korrelierten Lateral Join.

Ausgabeschema:

Column Type Description
line_number BIGINT 1-indexed line number
content VARCHAR Line content (preserves original line endings)
byte_offset BIGINT Byte position of line start
file_path VARCHAR Source file path (read_lines only)

Trimming (Argument trim; verändert nur den Inhalt, nie welche Zeilen erscheinen):

  • NULL / false / 'none' - Exakt erhalten (Standard)
  • true / 'endings' - Nur den Zeilenabschluss entfernen
  • 'right' - Abschluss sowie nachfolgende Leerzeichen/Tabs entfernen
  • 'left' - Führende Leerzeichen/Tabs entfernen, Abschluss behalten
  • 'both' - Beide Seiten

Zeilenauswahl:

  • Einzelne Zeile: 42 oder lines := 42
  • Bereich: '100-200' (inklusive)
  • Liste: [1, 5, 10]
  • Mit Kontext: '42 +/-3'
  • Vom Ende: '+10-' (letzte 10 Zeilen), '+5' (5. vom Ende)
  • Im Pfad eingebettet: 'file.py:42 +/-3'
  • Struct: {start: 100, stop: 200} oder {line: 42, context: 3}

Kontextzeilen:

  • before := N - N Zeilen vor jedem Treffer einbeziehen
  • after := N - N Zeilen nach jedem Treffer einbeziehen
  • context := N - Kurzform für before und after

Anwendungsfälle:

  • Bestimmte Zeilen aus Logdateien extrahieren
  • Fehlerzeilen mit umgebendem Kontext holen
  • Mehrere Dateien mit Glob-Mustern verarbeiten
  • Mehrzeilige Zeichenkettenspalten parsen

Hinzugefügte Funktionen

function_name function_type description comment examples
parse_lines table NULL NULL
read_lines table NULL NULL
read_lines_lateral table NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

Diese Erweiterung fügt keine Einstellungen hinzu.