• Publicidad

Volcar una consulta SQL a un archivo de texto

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Volcar una consulta SQL a un archivo de texto

Notapor Alfumao » 2011-11-30 05:20 @264

Hola a todos, mi duda es cómo volcar a un archivo de texto todos los campos de una base de datos en SQL.
La intención es poder imprimir en el archivo de salida (OUT) todo el contenido de la base de datos, pero no sé cómo asignar el resultado de la $query a una variable que pueda imprimir. Será una tontería pero no lo capto... y por más que retoco el script sigo sin dar en el clavo.

Aquí pongo el código que uso para la consulta.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl.exe
  2. use strict;
  3. use DBI;
  4. use DBD::mysql;
  5.  
  6. # CONFIG VARIABLES
  7. my $platform  = "mysql";
  8. my $database  = "fungo";
  9. my $host      = "localhost";
  10. my $port      = "3306";
  11. my $tablename = "genomes";
  12. my $user      = "user";
  13. my $pw        = "password";
  14.  
  15. open OUT, ">>SQL_print.txt" || die("can´t open out file");
  16.  
  17. my $table = "genomes";
  18.  
  19. # CONEXION BD
  20. my $dsn = "dbi:mysql:$database:localhost:3306";
  21. my $connect = DBI->connect( $dsn, $user, $pw );
  22.  
  23. # PREPARAMOS QUERY
  24. my $query        = "SELECT * FROM $table";
  25. my $query_handle = $connect->prepare($query);
  26.  
  27. # EJECUTAMOS QUERY
  28. $query_handle->execute();
  29.  
  30. # ASIGNAMOS LAS COLUMNAS A VARIABLES
  31. $query_handle->bind_columns( undef, \my $gene, );
  32.  
  33. # LOOP POR LOS RESULTADOS PARA IMPRIMIR EN OUT
  34. while ( $query_handle->fetch() ) {
  35.     print OUT "$gene\t\n";
  36.  
  37. }
  38.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2011-11-30 06:01 @292, editado 1 vez en total
Razón: Formateado de código con Perltidy
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Volcar una consulta SQL a un archivo de texto

Notapor Alfumao » 2011-11-30 06:54 @329

Creo que ya encontré la solución.
El asunto era hacer la correspondencia de las variables con las columnas de la tabla.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # BIND TABLE COLUMNS TO VARIABLES
  2. $query_handle->bind_columns(\my $gene,\my $sdha,\my $sdhb,\my $sdhc,\my $sdhd);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y hacer que las imprimiera al OUT

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # LOOP THROUGH RESULTS
  2. while($query_handle->fetch()) {
  3.    print OUT "$gene\t$sdha\t$sdhb\t$sdhc\t$sdhd\n";
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora sólo tengo que prepararlo para que el programa defina el número de variables que ha de ligar a las columnas e imprimir, sin tener que dárselo yo prefijado...
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Volcar una consulta SQL a un archivo de texto

Notapor explorer » 2011-11-30 06:59 @332

En ese caso, mejor recuperar la línea entera, mediante un fetchrow_array().

Ejemplo sacado de la línea 181 del manual de DBI:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?");
  2.  
  3. $sth->execute( $baz );
  4.  
  5. while ( @row = $sth->fetchrow_array ) {
  6.     print "@row\n";
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Así que, modificarlo para que muestre todas las columnas, solo es necesario hacer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $sth = $dbh->prepare("SELECT * FROM table");
  2.  
  3. $sth->execute();
  4.  
  5. while ( @row = $sth->fetchrow_array ) {
  6.     print "@row\n";
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Volcar una consulta SQL a un archivo de texto

Notapor Alfumao » 2011-12-01 08:46 @407

Gracias, (como siempre), explorer.

:wink:
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514


Volver a Básico

¿Quién está conectado?

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

cron