• Publicidad

Script para pasar de una bbdd remota a una bbdd local

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Script para pasar de una bbdd remota a una bbdd local

Notapor magic » 2009-05-06 04:10 @215

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.003 segundos, usando GeSHi 1.0.8.4



¡Gracias a todos de antemano!
magic
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-05-06 04:02 @210

Publicidad

Notapor magic » 2009-05-06 05:34 @273

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
magic
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-05-06 04:02 @210


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado