Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Bases de Datos » Importar datos de XML a una base de datos MySQL Responder al tema
Nuevo tema


Página 1 de 1  [ 2 mensajes ] 
 
Nota 2010-04-20 05:06 @254

Perlero Nuevo
Registrado: 2010-04-20 05:00 @250
Mensajes: 44
Importar datos de XML a una base de datos MySQL
Dado el siguiente XML, quiero insertar los datos en la tabla 'usuarios' de mi base de datos en MySQL. ¿Cómo se hace?

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE datos_usuarios SYSTEM "datos_validos.dtd">
  3.  
  4. <datos_usuarios>
  5.  
  6. <usuario>
  7. <id>1</id>
  8. <nombre>ernerto</nombre>
  9. <apellidos>guzman</apellidos>
  10. <direccion>canarias</direccion>
  11. <telefono>655666777</telefono>
  12. <email>loe@ole.es</email>
  13. <login>ernedto2</login>
  14. <clave>ller43</clave>
  15. </usuario>
  16.  
  17. </datos_usuarios>


La tabla en MySQL tiene los campos: id,nombre,apellidos,direccion,telefono,email,login,clave

¡¡¡Saludos!!!


Nota 2010-04-20 05:38 @276
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10261
Re: Importar datos de XML a una base de datos MySQL
Bienvenido a los foros de Perl en Español, jcarranza.

Esta es una forma sencilla de hacerlo (no probado):
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use DBI;
  7. use XML::Simple;
  8.  
  9. my $xml_inline = q(
  10.     <datos_usuarios>
  11.         <usuario>
  12.         <id>1</id>
  13.         <nombre>ernerto</nombre>
  14.         <apellidos>guzman</apellidos>
  15.         <direccion>canarias</direccion>
  16.         <telefono>655666777</telefono>
  17.         <email>loe@ole.es</email>
  18.         <login>ernedto2</login>
  19.         <clave>ller43</clave>
  20.         </usuario>
  21.     </datos_usuarios>
  22. );
  23.  
  24. my $xmls = XML::Simple->new;
  25. my $xml;
  26.  
  27. eval {
  28.     $xml = $xmls->XMLin( $xml_inline, KeyAttr => 1 );
  29. };
  30.  
  31. die "ERROR en la validación del xml: $!\n"
  32.     if $@;
  33.  
  34. #use Data::Dumper;
  35. #print Dumper $xml;
  36.  
  37. my $dbh = DBI->connect('DBI:mysql:database=labasededatos;host=localhost', 'usuario', 'contraseña', )
  38.     or die "ERROR: No pude conectarme a la base de datos: $!\n";
  39.  
  40. my $sth = $dbh->prepare("INSERT INTO tabla(id, nombre, apellidos, direccion, telefono, email, login, clave) VALUES (?,?,?,?,?,?,?,?)");
  41.  
  42. $sth->execute(
  43.     $xml->{usuario}->{id},
  44.     $xml->{usuario}->{nombre},
  45.     $xml->{usuario}->{apellidos},
  46.     $xml->{usuario}->{direccion},
  47.     $xml->{usuario}->{telefono},
  48.     $xml->{usuario}->{email},
  49.     $xml->{usuario}->{login},
  50.     $xml->{usuario}->{clave},
  51. );
  52.  

Si el xml lo tienes en un fichero aparte, solo tienes que pasárselo a XMLin() para que lo lea.

También tienes el módulo XML::EasySQL que puede realizar la misma tarea, con menos líneas.

_________________
JF^D Perl programming


Responder al tema  [ 2 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO