Mar Abr 20, 2010 5:06 am |
|
|
jcarranza
Perlero Nuevo
|
Registrado: Mar Abr 20, 2010 5:00 am 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? Using xml Syntax Highlighting <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE datos_usuarios SYSTEM "datos_validos.dtd">
<datos_usuarios>
<usuario>
<id>1</id>
<nombre>ernerto</nombre>
<apellidos>guzman</apellidos>
<direccion>canarias</direccion>
<telefono>655666777</telefono>
<email>loe@ole.es</email>
<login>ernedto2</login>
<clave>ller43</clave>
</usuario>
</datos_usuarios>
La tabla en MySQL tiene los campos: id,nombre,apellidos,direccion,telefono,email,login,clave¡¡¡Saludos!!!
|
Mar Abr 20, 2010 5:38 am |
|
|
 |
explorer
Administrador
|
Registrado: Dom Jul 24, 2005 6:12 pm Ubicación: Valladolid, España Mensajes: 9492
|
|
|
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): Using perl Syntax Highlighting #!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use DBI;
use XML::Simple;
my $xml_inline = q(
<datos_usuarios>
<usuario>
<id>1</id>
<nombre>ernerto</nombre>
<apellidos>guzman</apellidos>
<direccion>canarias</direccion>
<telefono>655666777</telefono>
<email>loe@ole.es</email>
<login>ernedto2</login>
<clave>ller43</clave>
</usuario>
</datos_usuarios>
);
my $xmls = XML::Simple->new;
my $xml;
eval {
$xml = $xmls->XMLin( $xml_inline, KeyAttr => 1 );
};
die "ERROR en la validación del xml: $!\n"
if $@;
#use Data::Dumper;
#print Dumper $xml;
my $dbh = DBI->connect('DBI:mysql:database=labasededatos;host=localhost', 'usuario', 'contraseña', )
or die "ERROR: No pude conectarme a la base de datos: $!\n";
my $sth = $dbh->prepare("INSERT INTO tabla(id, nombre, apellidos, direccion, telefono, email, login, clave) VALUES (?,?,?,?,?,?,?,?)");
$sth->execute(
$xml->{usuario}->{id},
$xml->{usuario}->{nombre},
$xml->{usuario}->{apellidos},
$xml->{usuario}->{direccion},
$xml->{usuario}->{telefono},
$xml->{usuario}->{email},
$xml->{usuario}->{login},
$xml->{usuario}->{clave},
);
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
|
|
Página 1 de 1
|
[ 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
|
|
Socializa |
 |
|