Exportar tablas de mysql a csv con perl
Jan 05, 2006 in Notas rápidas
#!/usr/bin/perl
#
# Obtiene estadisticas diarias sobre ociojoven.com y ojgames.com
#
use DBI;
&ConnectDatabase;
$path=”/tmp/product.csv”;
@tablas=(
“eZTrade_Category”,
“eZTrade_Quantity”);
foreach $tabla (@tablas){
$path=”/tmp/$tabla.csv”;
$sql= “SELECT * INTO OUTFILE ‘$path’ FIELDS TERMINATED BY ‘;’ ENCLOSED BY ‘\”‘ LINES TERMINATED BY ‘\r\n’ FROM $tabla”;
$foo = &QueryOneFetch ($sql );
}
&DisconnectDatabase;
#Nos conecta a la base de datos que especifiquemos
sub ConnectDatabase {
$database = “produccion”;
$host=”dbserver”;
$data_source = “DBI:mysql:database=$database;host=$host;port=3306″;
#$data_source = “DBI:mysql:$database”;
$username = “user”;
$password = “password”;
$dbh = DBI->connect( $data_source, $username, $password)
or die “Can’t connect to $data_source: $dbh->errstr\n”;
}
# Desconecta de la base de datos
sub DisconnectDatabase {
$dbh->disconnect;
}
#Ejecuta un query SQL y devuelve su resultado
sub Query {
local ($query) = @_;
$sth = $dbh->prepare(“$query”);
$rc = $sth->execute;
$row = $sth->fetchrow_arrayref;
$sth->finish;
return $rc;
}
# Realiza una consulta y devuelve solo la primera linea
sub QueryOneFetch (){
local ($query) = @_;
$sth = $dbh->prepare(“$query”);
$rc = $sth->execute;
if ( @row = $sth->fetchrow_array ) {
$ret = $row[0];
}
$sth->finish;
return ($ret);
}

