Página 1 de 1

Script para pasar de una bbdd remota a una bbdd local

NotaPublicado: 2009-05-06 04:10 @215
por magic
Buenas, tengo una duda y es que debo de coger una bbdd (en MySQL) localizada en un servidor que hay en la red y copiarme los datos a una bbdd (también MySQL) en local, todo esto utilizando un script de Perl que me sincronice las bbdd nada más arrancar la aplicación web de Perl.

Estoy probando lo primero en local y necesito saber porqué este script no me realiza ninguna consulta. Cojo una bbdd que tengo creada de pruebas y lo que intento es que también en local me copie algunos campos, "simulando" para cuando tenga que atacar a la base de datos remota, pero no da ningún resultado la ejecución del script, la aplicación parece que funciona bien pero al mirar el phpmyadmin veo que no se ha copiado nada.

Utilizo Ubuntu 8.04 + Apache2 + PHP5 + mysql-server-5.0 + phpmyadmin

Paso el script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package RackMonkey::joan;

sub new {

###############################################################################################
#####################################CONSULTAS A ORIGEN########################################
###############################################################################################
my $db_user="root";
my $db_pass="";
my (@columnas, @filas);

my $q_string="DBI:mysql:@127.0.0.1=$hostname;joan=$db_name";
my $dbh = DBI->connect($q_string, $db_user, $db_pass)|| die "Database connection not made: $DBI::errstr";

#usar bbdd nuestra
my $use = qq{ "USE joan;" };
my $sth = $dbh->prepare($use);
$sth->execute;

#Preparar seleccion
my $select1 = qq{ "SELECT nombre FROM prueba1;"  };
my $sth1=$dbh->prepare($select1);
$sth1->execute;
while(@fila=$sth1->fetchrow_array()){
        push(@columnas, $fila[0]);
}

###############################################################################################
###################################VOLCAR INFORMACION ORIGEN###################################
###############################################################################################

#cadena de conexion IMPORTANTE IP & NOMBRE BBDD
my $q_string2="DBI:mysql:@127.0.0.1=$hostname2;pruebas=$db_name2";
my $dbh2 = DBI->connect($q_string2, $db_user, $db_pass)|| die "Database connection not made: $DBI::errstr";

#Preparar sentencia SQL
$sth2 = $dbh2->prepare("INSERT INTO usuario(nombre) VALUES ('@columnas')");
$sth1 = $dbh->prepare("SELECT * FROM prueba1");
$sth1->execute();
while(@fila = $sth1->fetchrow_array()) {
        $sth2->execute(@fila);
}

}
1;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4



¡Gracias a todos de antemano!

NotaPublicado: 2009-05-06 05:34 @273
por magic
Perdonad las molestias, logré solucionarlo, dejo a continuación mi script por si hay alguna otra persona que alguna vez le haga falta que lo utilice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package RackMonkey::joan;

sub new {

###############################################################################################
#####################################CONSULTAS A ORIGEN########################################
###############################################################################################
my $db_user="root";
my $db_pass="";
my (@columnas, @filas);

my $q_string="DBI:mysql:@'127.0.0.1'=$hostname;joan=$db_name";
my $dbh = DBI->connect($q_string, $db_user, $db_pass)|| die "Database connection not made: $DBI::errstr";

my $use = qq{ USE joan };
my $sth = $dbh->prepare( $use );
$sth->execute();

#usar bbdd nuestra
my $use1 = qq{ SELECT nombre FROM prueba1 };
my $sth3 = $dbh->prepare($use1);
$sth3->execute();

my $vueltas=0;

while(@fila=$sth3->fetchrow_array()){
        push(@columnas, $fila[0]);
        $vueltas++;
}

###############################################################################################
###################################VOLCAR INFORMACION ORIGEN###################################
###############################################################################################
my ($q_string2, $sth2, $dbh2,$hostname2, $db_name2);

#cadena de conexion IMPORTANTE IP & NOMBRE BBDD

my $q_string2="DBI:mysql:@'127.0.0.1'=$hostname2;pruebas=$db_name2";
my $dbh2 = DBI->connect($q_string2, $db_user, $db_pass)|| die "Database connection not made: $DBI::errstr";

my $bbdd = qq{ USE pruebas };
my $query = $dbh2->prepare( $bbdd );
$query->execute();

my $eliminar = qq { TRUNCATE TABLE usuario };
my $query_borrar = $dbh2->prepare ($eliminar);
$query_borrar->execute();

my $i=0;

while ($i < $vueltas)
{
        my $consulta = qq{ INSERT INTO usuario(nombre) VALUES ('@columnas[$i]')};
        my $query2=$dbh2->prepare($consulta);
        $query2->execute();
        $i++;
}

}
1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4