• Publicidad

Grabar XML desde una BD a archivo

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

Grabar XML desde una BD a archivo

Notapor pau_dial » 2012-06-01 14:49 @659

La verdad, no sé si mi pregunta corresponde aquí. Soy nueva en Perl y no entiendo casi nada de lo que mencionan anteriormente pero mi pregunta es algo similar.

Quiero crear un archivo XML con un solo dato que tengo en mi BD. Bueno, en realidad ya tengo guardado el código del XML en la BD, solo quiero extraer el código de la BD y generar el archivo XML en algún directorio de mi servidor, no sé si me expliqué bien.

  1. consulta a la BD
  2. el dato consultado tiene el código de un XML
  3. guardar ese dato en un achivo .XML

Les agradecería mucho si me explican con un ejemplo muy simple.

¡Gracias!
Avatar de Usuario
pau_dial
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-06-01 14:28 @644

Publicidad

Re: Grabar XML desde una BD a archivo

Notapor explorer » 2012-06-01 15:27 @685

Bienvenida a los foros de Perl en Español, pau_dial.

El problema parece bastante sencillo de resolver, ya que, si el xml que obtenemos de la base de datos es lo que tenemos que grabar a un archivo, solo tenemos que realizar la operación de grabar un archivo. No hay ninguna transformación ni procesado intermedio.

Sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use DBI;
  3.  
  4. my $database = 'nombre de la base de datos';
  5. my $host     = 'localhost';
  6. my $usuario  = 'nombre del usuario';
  7. my $password = 'clave';
  8.  
  9. my $dsn      = "DBI:mysql:database=$database;host=$hostname";                 # cadena de conexión
  10. my $dbh      = DBI->connect($dsn, $usuario, $password);                       # conexión
  11. my $sth      = $dbh->prepare(                                                 # preparar la consulta
  12.                    "SELECT campo_xml FROM tabla WHERE campo_id = ? LIMIT 1"
  13.                );
  14.  
  15. $sth->execute("42");                                                          # consulta
  16.  
  17. my $xml;
  18. while (my $ref = $sth->fetchrow_hashref()) {         # para cada fila del resultado
  19.     $xml = $ref->{'campo_xml'};                      # obtenemos el xml del campo
  20. }                                                    # realmente, no necesitamos un bucle
  21.  
  22. $sth->finish;                                        # desconexión
  23.  
  24. open my $ARCHIVO, q[>], 'archivo.xml'
  25.                   or die "ERROR: No puedo escribir en archivo_xml:$!\n";
  26. binmode $ARCHIVO;                                    # modo binario de grabación
  27. print   $ARCHIVO $xml;                               # grabación del $xml
  28. close   $ARCHIVO;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

El bucle while() no es necesario si el resultado solo es una fila. Pero queda ahí por si se da el caso de que quieres hacer alguna consulta que devuelva más de una fila. Y si cada xml recuperado debe ir en un archivo, pues habrá que meter las líneas open()..close() dentro del bucle, para que hagan esa grabación.
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: Grabar XML desde una BD a archivo

Notapor pau_dial » 2012-06-01 16:32 @731

¡¡Wow!! En verdad, muchísimas gracias. ¡Me funcionó de maravilla!
Avatar de Usuario
pau_dial
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-06-01 14:28 @644


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 23 invitados

cron