The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Sql::Script::Reader - Leser von SQL-Skripten

BASE CLASS

Quiq::Hash

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.186

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2020 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.