por Hector Gutierrez » 2011-05-30 12:28 @561
Aquí está el código. La primera parte es donde hago la conexión a la tabla de la base de datos y se llama ConectarDBe.pm
#!/usr/bin/perl
package ConectarDBe;
use strict;
use DBI;
# VARIABLES A UTILIZAR
my $db_user = "postgres";
my $db_pass = "postgres";
my $host_name = "localhost";
my $db_name = "DePaso";
# DEFINICIÓN DE LA CONEXIÓN
my $q_string = "dbi:Pg:host=$host_name;database=$db_name";
sub connect{
return (DBI->connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
1;
La segunda parte es la que trasfiere los datos de la tabla en PostgreSQL a un archivo en Excel, da como respuesta el No. de renglones escritos:
#!/usr/bin/perl
use ConectarDBe;
use Spreadsheet::WriteExcel;
my ($dbh,$sth,@datos_personales);
my $col = $row = 0;
#-------------- Conexión a la base de datos
$dbh = ConectarDBe->connect();
#-------------- Preparación de la extracción de información
$sth = $dbh->prepare('SELECT llave,fechanac, alumnonombre, alumnopaterno, alumnomaterno FROM tbdatos WHERE alumnonombre like ?') or die("Couldn't prepare statement: " . $dbh->errstr);
$sth->execute("REB%") or die("Couldn't execute statement: " . $sth->errstr);
#-------------- Creo un libro nuevo de trabajo en Excel
my $workbook = Spreadsheet::WriteExcel->new('Datos extraidos 1.xls');
#-------------- Agrego a la hoja de trabajo
$worksheet = $workbook->add_worksheet();
#-------------- Agrego y defino un formato
$format = $workbook->add_format(); # Add a format
$format->set_bold();
$format->set_color('blue');
$format->set_align('center');
#------------ Escribo en la hoja de Excel
$worksheet->write($row, $col++, 'Llave', $format);
$worksheet->write($row, $col++, 'Fecha de Nac.', $format);
$worksheet->write($row, $col++, 'Nombre del Alumno', $format);
$worksheet->write($row, $col++, 'Ap. Paterno', $format);
$worksheet->write($row, $col, 'Ap. Materno', $format);
#------------ Comenzamos lectura y escritura
$row +=1;
while(@datos_personales = $sth->fetchrow_array()){
$worksheet->write($row, 0, "$datos_personales[0]");
$worksheet->write($row, 1, "$datos_personales[1]");
$worksheet->write($row, 2, "$datos_personales[2]");
$worksheet->write($row, 3, "$datos_personales[3]");
$worksheet->write($row, 4, "$datos_personales[4]");
$row +=1;
}
print "Termine, No. de registros escritos en Excel " . $row ."\n";
#------------ Cierro y desconecto
$sth->finish;
$dbh->disconnect;
Saludos