NAME
Quiq::Sql::Script::Reader - Leser von SQL-Skripten
BASE CLASS
SYNOPSIS
use Quiq::Sql::Script::Reader;
my $rd = Quiq::Sql::Script::Reader->new($dbms,$file);
while (my $stmt = $rd->nextStmt) {
# irgendwas mit dem SQL-Statement machen
}
$rd->close;
DESCRIPTION
Die Klasse implementiert einen Leser von SQL-Skripten. Ein SQL-Skript ist eine Folge von SQL-Statements, die mit Semikolon am Ende einer Zeile (also vor einem Newline) voneinander getrennt sind. Eine Instanz der Klasse liefert nacheinander die einzelnen Statements, die ausgeführt oder anderweitig verarbeitet werden können. Da das Skript sukzessive gelesen wird, können auch sehr große SQL-Skripte, z.B. von Datenbank-Dumps, durch die Klasse verarbeitet werden.
Leerzeilen am Anfang eines Statements werden entfernt, außerdem das abschließende Semikolon und darauffolgender Whitespace bis zum Zeilenende.
CAVEATS
Mehrere SQL-Statements auf einer Zeile beherrscht die Klasse nicht.
METHODS
Klassenmethoden
new() - Konstruktor
Synopsis
$rd = $class->new($dbms,$file,@opt);
$rd = $class->new($dbms,\$str,@opt);
Arguments
- $dbms
-
Name des DBMS, das die SQL-Statements des Skripts ausführen kann.
- $file
-
Dateipfad des SQL-Skripts. Im Falle von '-' wird von STDIN gelesen.
- $str
-
Das SQL-Skript als Zeichenkette.
Options
- -separator => $regex (Default: qr/;\s*$/)
-
Statement-Separator. Per Default ein Semikolon (;) am Zeilenende. Andere Variante (geeigneter, wenn Prozeduren vorkommen können), Semikolon allein auf Zeile: qr/^;\s*$/.
Returns
Reader-Objekt
Description
Instantiiere ein Reader-Objekt für DBMS $dbms und Datei $file bzw. Zeichenkette $str und liefere eine Referenz auf dieses Objekt zurück.
Objektmethoden
close() - Beende Nutzung des Readers
Synopsis
$rd->close;
Description
Beende die die Nutzung des Reader-Objekts. Nach Aufruf der Methode kann der Reader nicht mehr genutzt werden.
nextStmt() - Nächstes Statement
Synopsis
$stmt = $rd->nextStmt;
Returns
SQL-Statemt (String)
Description
Liefere das nächste SQL-Statement des Skripts. Leere Statements werden übergangen. Ist das Ende erreicht, liefere undef
.
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.