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 fileSELECT * FROM read_lines('server.log');
-- Read specific lines (positional argument)SELECT * FROM read_lines('server.log', '100-200');
-- Read lines with context around matchesSELECT * FROM read_lines('error.log', 42, context := 3);
-- Path-embedded line selectionSELECT * 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 filesSELECT * FROM read_lines('logs/*.log')WHERE content LIKE '%ERROR%';
-- Parse lines from a stringSELECT * FROM parse_lines('line1line2line3');Ü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ützungread_lines(path, lines[, trim])- Ausgewählte Zeilen lesen (Positionsargumente)read_lines_lateral(path[, lines[, trim]])- Lateral-Join-Variante für Dateipfade aus Tabellenspaltenparse_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:
42oderlines := 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 einbeziehenafter := N- N Zeilen nach jedem Treffer einbeziehencontext := 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.