Thread Perl , SQL und Datenbank (13 answers)
Opened by joelsok at 2010-07-15 16:22

topeg
 2010-07-15 21:04
#139830 #139830
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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.

View full thread Perl , SQL und Datenbank