Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Beispiele für das Modul SAP::DBTech::loader Dokument im Navigationsbaum lokalisieren

Um das Perl-Skript sample.pl aufzurufen und sich am Loader als Datenbankbenutzer MONA mit dem Kennwort RED an die Datenbankinstanz DEMODB anzumelden, geben Sie folgendes Kommando auf der Kommandozeile ein:

perl sample.pl MONA RED DEMODB

Aufbau einer Verbindung

# Verweis auf Perl-Libraries

# ----------------------------

use SAP::DBTech::loader;

# Parsen der Aufrufargumente

# --------------------------

my $user_name = $ARGV [0];

my $password = $ARGV [1];

my $database_name = $ARGV [2];

 

# Aufbau einer Loadersitzung; es wird noch keine

# Verbindung zur Datenbankinstanz aufgebaut

# ------------------------------------------------------

my $session = new Loader ();

 

# Anmelden an die Datenbankinstanz

# -------------------------------------

$session->cmd ("use user $user_name $password serverdb $database_name");

 

# Abmelden

# -------------------------------------

$session->release ();

Variante

Um zu vermeiden, dass das System Benutzername und Kennwort in Großbuchstaben umwandelt, schließen Sie Benutzername und Kennwort im Kommando use user in doppelte Anführungszeichen ein:

$session->cmd ("use user \”$user\”_name \”$password\” serverdb $database_name");

 

In den folgenden Beispielen wird die Anmeldung verkürzt angegeben:

my $session = new Loader ()

$session->cmd ("use user ${ARGV [0]} ${ARGV [1]} serverdb ${ARGV [2]}");

Ausführen von Loader-Kommandos

Mit der Methode cmd können Sie sowohl Loader-Kommandos als auch SQL-Anweisungen ausführen.

use SAP::DBTech::loader;

# Aufbau einer Loadersitzung

my $session = new Loader ();

$session->cmd ("use user ${ARGV [0]} ${ARGV [1]} serverdb ${ARGV [2]}");

# Ausführen einer SQL-Anweisung

$session->cmd("

     CREATE TABLE customer2

     (

      cno    FIXED(4,0)  PRIMARY KEY,

      title       CHAR(7),

      firstname   CHAR(10),

      name        CHAR(10) NOT NULL,

      zip         CHAR(5),

      address     CHAR(25) NOT NULL)");

# Ausführen eines DATALOAD-Kommandos

$session->cmd ("

DATALOAD TABLE customer

      cno        1

      title      2

      firstname  3

      name       4

      zip        5

      address    6

      INFILE 'customer.dat'");

Behandeln von Fehlersituationen

Wenn innerhalb der Methode cmd ein Fehler auftritt, dann wird ein Ausnahmeobjekt der Klasse LoaderError erzeugt. Dieses Ausnahmeobjekt können Sie innerhalb eines try-except-Kommandos erkennen und behandeln.

Die Methode sql bietet einen vereinfachten Zugriff auf Fehler innerhalb von SQL-Anweisungen. Wenn innerhalb der Methode sql ein SQL-Fehler auftritt, dann wird keine Ausnahme erzeugt, sondern die Fehlernummer an den Aufrufer zurückgegeben. Diese Fehlernummer können Sie im Programm abfragen.

use SAP::DBTech::loader;

# Aufbau einer Loadersitzung

my $session = new Loader ();

$session->cmd ("use user ${ARGV [0]} ${ARGV [1]} serverdb ${ARGV [2]}");

# Abfrage, ob eine Tabelle existiert

my $sqlrc = $session->sql ("EXISTS TABLE customer2");

# die Tabelle wird nur angelegt, wenn sie

# nicht bereits existiert

if ($sqlrc == -4004) {

    $session->cmd("

        CREATE TABLE customer2

         (

            cno         FIXED(4,0)  PRIMARY KEY,

            title       CHAR(7),

            firstname   CHAR(10),

            name        CHAR(10) NOT NULL,

            zip         CHAR(5),

            address     CHAR(25) NOT NULL)");

}

# Ausführen eines DATALOAD-Kommandos

my $filename = 'customer.dat';

eval {

    $session->cmd ("

        DATALOAD TABLE customer2

        cno        1

        title      2

        firstname  3

        name       4

        zip        5

        address    6

        INFILE '$filename'");

};

# Ausgabe der Fehlermeldung

if ($@) {

    print "DATALOAD der Datei $filename ist gescheitert: $@\n";

}

Beispieldaten

Die in den Beispielen verwendete Datei customer.dat hat folgenden Inhalt:

"3000","Mrs","Jenny","Porter","10580","1340 N.Ash Street, #3"

"3100","Mr","Peter","Brown","48226","1001 34th Str., APT.3"

"3200","Company","?","Datasoft","90018","486 Maple Str."

"3300","Mrs","Rose","Brian","75243","500 Yellowstone Drive, #2"

"3400","Mrs","Mary","Griffith","20005","3401 Elder Lane"

"3500","Mr","Martin","Randolph","60615","340 MAIN STREET, #7"

"3600","Mrs","Sally","Smith","75243","250 Curtis Street"

"3700","Mr","Mike","Jackson","45211","133 BROADWAY APT. 1"

"3800","Mrs","Rita","Doe","97213","2000 Humboldt Str., #6"

"3900","Mr","George","Howe","75243","111 B Parkway, #23"

"4000","Mr","Frank","Miller","95054","27 5th Str., 76"

"4100","Mrs","Susan","Baker","90018","200 MAIN STREET, #94"

"4200","Mr","Joseph","Peters","92714","700 S. Ash Str., APT.12"

"4300","Company","?","TOOLware","20019","410 Mariposa Str., # 10"

"4400","Mr","Antony","Jenkins","20903","55 A Parkway, #15"

Ende des Inhaltsbereichs