• Publicidad

Ordenar output de Consultas MySQL

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

Ordenar output de Consultas MySQL

Notapor roxana_ » 2010-11-09 12:52 @577

Hice un script para hacer consultas a MySQL, en cada consulta se pregunta en mi caso por una proteína distinta y el identificador de cada proteína lo toma de un archivo que contiene una lista de identificadores. Este es el script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use DBI;
  4. use DBD::mysql;
  5.  
  6. #Mis variables de configuración
  7. $host = "mi_host";
  8. $port = "3306";
  9. $database = "pfam";
  10. $user = "mi_usuario" ;
  11. $pw = "mi_paswd" ;
  12.  
  13.  
  14. #Perl mysql connect ()
  15. $dsn="DBI:mysql:$database:$host:$port";
  16. $db=DBI->connect($dsn, $user, $pw);
  17. #$connect = mysql -> connect ($host, $database, $user, $pw) or die "Connection Error\n";
  18.  
  19.  
  20. #Select DB
  21. #$connect->selectdb($database);
  22.  
  23. #Abro el file con las lista de pfamseq_acc a consultar
  24. open FILE, "acc_uniq_com" or die ("can't open the file");
  25. @myfile = <FILE> ;
  26.  
  27. #Define MySQL Query
  28. foreach $linea(@myfile)
  29. {chomp ($linea);
  30.  
  31. $myquery ="SELECT distinct pfamseq.pfamseq_acc,pdb_residue_data.pdb_id,pdb_residue_data.chain, pdb_pfamA_reg.pdb_res_start, pdb_pfamA_reg.pdb_res_end, pdb.method, pdb.resolution, pdb_pfamA_reg.seq_start, pdb_pfamA_reg.seq_end, pfamA_acc FROM pdb, pdb_pfamA_reg, pfamA, pfamseq, pdb_residue_data WHERE pdb_residue_data.pdb_id=pdb.pdb_id and pdb_residue_data.pfamseq_acc=pfamseq.pfamseq_acc and pdb.pdb_id=pdb_pfamA_reg.pdb_id and pfamA.auto_pfamA=pdb_pfamA_reg.auto_pfamA and pfamseq.auto_pfamseq=pdb_pfamA_reg.auto_pfamseq and pfamseq.pfamseq_acc = $linea"  ;
  32. #Preparar la consulta
  33. $consulta = $db -> prepare ("$myquery");
  34. #Execute the Query Function
  35. $consulta -> execute();
  36. my @results;
  37. while (@result = $consulta -> fetchrow_array ()) {
  38.         foreach (@result)
  39.                                 {print "$_" ; }
  40.                                                                 }
  41. }
  42. $consulta -> finish();
  43. $db->disconnect;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Mi problema es el formato de salida, estoy imprimiendo todas las columnas sin separador y todas las lineas juntas.
Ej:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
P007201l60A24148x-ray1.7024148PF00959P00720250lA24148x-ray1.8024148PF00959P00720110lA24148x-ray1.7024148PF00959
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Salida deseada:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
P00720 1l60 A 24 148 x-ray 1.702 41 48 PF00959
P00720 250l A 24 148 x-ray 1.802 41 48 PF00959
P00720 110l A 24 148 x-ray 1.702 41 48 PF00959
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
roxana_
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-11-04 15:18 @679

Publicidad

Re: Ordenar output de Consultas MySQL

Notapor teco000 » 2010-11-09 14:34 @649

Una forma sería hacer esto; después del execute() pon
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $consulta->bind_columns(\$campo1,\$campo2,\$campo3);
  2. while ( $consulta->fetchrow_array()) {
  3.   print "$campo1    $campo2   $campo3\n";
  4. }
  5.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Re: Ordenar output de Consultas MySQL

Notapor explorer » 2010-11-09 16:18 @721

Con join(), solucionado.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     print join(" ", @result),"\n";
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados