Thread Perl , SQL und Datenbank
(13 answers)
Opened by joelsok at 2010-07-15 16:22
Mit einem Modul das ich nicht kenne und ohne dessen Code kann ich dir mit dem Modul nicht helfen.
Also ohne genau zu wissen welcher Art das "kopieren" ist (UPDATE und/oder INSERT ?) Code (perl): (dl
)
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; Irgendwie habe ich das Gefühl ich hätte so was in der Art schon mal geschrieben... Alternativ kann man sicher auch einen SQL-Dump der Tabelle machen und das in der anderen DB wieder einspielen. |