Leser: 27
1 2 3 4 5 6
sub getRowCount { my $self = shift; print "getRowCount.RowCount=",$self->{'RowCount'},"\n" if ($debug); return $self->{'RowCount'}; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
$query = "select * from Adresse"; # Query auf Source Datenbank, Fehler abfangen if ($odbc->query($query)) { # Rückgabewert 1 -> SQL-Abfrage fehlgeschlagen $error = $odbc->getErrorText; # Fehlertext ermitteln #$logger->writeError ("error on SQL statement"); #$logger->writeError ("> $error"); $exitCode = 2; #goto END; } # Abfrage ob mehrere Ergebnisse vorhanden sind if ($odbc->getRowCount() > 0) { my $tester = $odbc->getRowCount(); print "source: $tester\n"; #--> leider bekomme ich hier 85 for (my $i=1; $i <= $odbc->getRowCount(); $i++) { $name = $odbc->getColumn($i,"Name"); $old_Incident_recId = $odbc->getColumn($i,"RecId");
2010-07-15T15:20:34 joelsokDie Funktion getRowCount ist nicht direkt in meiner Code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
#!/usr/bin/perl use strict; use warnings; use DBI; #server A my $host_a=''; # DB-Name A my $db_a=''; # Login Benutzer A my $user_a=''; # Login Passwort A my $pass_a=''; # DBI-connect string DB_A # an DB-Typ anpassen! my $dbi_string_a="DBI:mysql:database=$db_a;host=$hostname_a" #server B my $host_b=''; # DB-Name B my $db_b=''; # Login Benutzer B my $user_b=''; # Login Passwort B my $pass_b=''; # DBI-connect string DB_B # an DB-Typ anpassen! my $dbi_string_b="DBI:mysql:database=$db_b;host=$hostname_b" my $dbh_a=DBI->connect( $dbi_string_a, $user_a, $pass_a, { # script bei Fehler beenden RaiseError => 1, # Änderungen automatisch übernehmen # (macht das schreiben langsamer) AutoCommit => 1, }, ) or die("ERROR Connect DB A".$DBI::errstr."\n"); my $dbh_b=DBI->connect( $dbi_string_b, $user_b, $pass_b, { # script bei Fehler beenden RaiseError => 1, # Änderungen automatisch übernehmen # (macht das schreiben langsamer) AutoCommit => 1, }, ) or die("ERROR Connect DB B".$DBI::errstr."\n"); my $sth_a = $dbh_a->prepare('SELECT * FROM Adresse'); $sth_a->execute(); while(my $row=$sth_a->fetchrow_hashref) { my @names=keys(%$row); my $keys=join(', ',@names); my $values=join(', ',map{'?'}@names); $dbh_b->do("INSERT INTO Adresse ($keys) VALUES ($values)",undef,@$row{@names}); } $sth_a->finish; $dbh_a->disconnect; $dbh_b->disconnect;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Lese alle Zeilen als Hashrefenz aus der Abfrage in DB A while(my $row=$sth_a->fetchrow_hashref) { # ermittle alle Schlüssel des Hashes (das sind die Spaltennamen) my @names=keys(%$row); # füge alle Spaltennamen Komma separiert zusammen my $keys=join(', ',@names); # erzeuge genauso viele Komma separierte "?" wie es Spaltennamen gibt my $values=join(', ',map{'?'}@names); # Erzeuge ein Statement das Alle Werte Aus der Abfrage in BD A in die Tabelle der DB B einfügt. # Beispiel: "INSERT INTO Adresse (ort, strasse, ausnummer) VALUES (?, ?, ?)" # und führe das Statement mit den Werten aus dem Hash aus. $dbh_b->do("INSERT INTO Adresse ($keys) VALUES ($values)",undef,@$row{@names}); }