<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,0)">Estoy completamente de acuerdo que usar XPath es lo más prolijo, pero a veces es necesario tomar decisiones desprolijas en pos de la performance. Habría que hacer pruebas y ver qué se comporta mejor.</div>
</div><div class="gmail_extra"><br clear="all"><div><div><br></div>.:-:ChiCkENURiNE:-:.<div><span>+ </span><span>El <a href="http://groups.google.com/group/spam-a-lot/" target="_blank">SPAM</a> tiene su lugar.</span></div>
</div>
<br><br><div class="gmail_quote">2013/6/14 Carlos M. Martinez <span dir="ltr"><<a href="mailto:carlosmarcelomartinez@gmail.com" target="_blank">carlosmarcelomartinez@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
Ese es el punto del XPath, no hace falta hilar tan fino en la
estructura del texto mismo como con sed/awk, donde matcheando
patrones de texto se te puede romper todo por un espacio de mas o de
menos.<br>
<br>
En Python: <a href="http://lxml.de/xpathxslt.html" target="_blank">http://lxml.de/xpathxslt.html</a><br>
<br>
s2<span class="HOEnZb"><font color="#888888"><br>
<br>
~Carlos</font></span><div><div class="h5"><br>
<br>
<div>On 6/14/13 8:58 AM, Chicken Urine
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_default">Dependiendo de como sea la
estructura del xml puede ser trivial con sed/awk pasarlo a un
csv. Hacer un load data de 10k registros en Mysql te puede
llevar menos de 30 segundos con la configuración optima.</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div><br>
</div>
.:-:ChiCkENURiNE:-:.
<div><span>+ </span><span>El <a href="http://groups.google.com/group/spam-a-lot/" target="_blank">SPAM</a> tiene su lugar.</span></div>
</div>
<br>
<br>
<div class="gmail_quote">2013/6/14 Alejandro Stendelis <span dir="ltr"><<a href="mailto:stendelis@gmail.com" target="_blank">stendelis@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Gracias, por los consejos en PHP, pero ya he
probado todo y he realizado varias pruebas de velocidad,
del xml preciso toda la info que tiene, el que tiene 2.5
millones de tags, se transforman en 10 mil registros en el
MYSQL, de ahí la velocidad de procesado que necesito.</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">El 13 de junio de 2013 23:36,
Ivan Baldo <span dir="ltr"><<a href="mailto:ibaldo@adinet.com.uy" target="_blank">ibaldo@adinet.com.uy</a>></span>
escribió:
<div>
<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hola.<br>
Capás que el problema con XMLReader es que
generalmente debe usarse iterando por cada
elemento leído con código PHP y PHP es lentísimo
como lenguaje :-(.<br>
Si no precisás realmente todos los elementos
del XML para procesar sino que sólo algunos
entonces en una de esas logras mejor velocidad
con DOMDocument y afines: <a href="http://www.php.net/manual/es/book.dom.php" target="_blank">http://www.php.net/manual/es/book.dom.php</a>
.<br>
Con esa clase lo levantas y luego por
ejemplo podes pedir todos los elementos que son
determinado "tag" (nombre de elemento) o por id;
si precisas algo mas avanzado entonces podés
utilizar DOMXPath.<br>
Alternativamente podés probar SimpleXML <a href="http://www.php.net/manual/es/book.simplexml.php" target="_blank">http://www.php.net/manual/es/book.simplexml.php</a>
que es un poco mas sencillo de usar aunque
supongo (me puedo equivocar) que un poco mas
lento, pero probablemente si no iteras en todos
los elementos va a ser bastante mas rápido que
XMLReader.<br>
Saludos.<br>
<br>
<br>
El 13/06/13 11:21, Alejandro Stendelis escribió:
<blockquote type="cite">
<div>
<div>
<div dir="ltr">Hola,<br>
<br>
Tengo un proyecto funcionando, esta
realizado en PHP, el mismo se trata de
procesar cada hora algunos archivos XML
(son unos 30 archivos que pesan de 5
megas a 350 megas). <br>
<br>
El servicio funciona de esta manera en
resumen.<br>
<br>
Legan los XML en formato .zip.<br>
Un cron job se fija cuando se
actualizan.<br>
Si hay archivos de descomprimen.<br>
Un php toma el XML y por medio de
XMLReader() lo procesa y hace unos 10
inserts en promedio por cada XML.<br>
Luego se utiliza los datos de la DB para
hacer funcionar un servicio.<br>
<br>
La situación hasta este momento es que
lo hace muy bien, pero necesito acelerar
el proceso de los XML, XMLReader() tarda
en el XML mas grande unos 20 minutos,
son cerca de 350 megas y unas 2.5
millones de lineas.<br>
<br>
Me imagino que haciendo un script shell
o en C, que corra directamente sobre el
servidor linux, ahorro mucho tiempo y
puedo tener mas control de los procesos,
ya que es mas nativo por así decirlo.<br>
<br>
Buscando encontré estos códigos, los
cuales me imagino que uno de ellos es el
mejor camino a seguir.<br>
<br>
Mi pregunta es, quien tiene experiencia
en tratar desde scripts datos
complejos?, y cual es el mejor camino a
seguir?<br>
Necesitaré un programador Freelance que
en algún momento tendré que contratar.<br>
<br>
<br>
<a href="http://vtd-xml.sourceforge.net/" target="_blank">http://vtd-xml.sourceforge.net/</a><br>
<a href="http://xml-shell.sourceforge.net/" target="_blank">http://xml-shell.sourceforge.net/</a><br>
<a href="http://www.xmlsh.org/Commands" target="_blank">http://www.xmlsh.org/Commands</a><br>
<a href="http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html" target="_blank">http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html</a><br>
<br>
Gracias.<br>
</div>
<br>
<fieldset></fieldset>
<br>
</div>
</div>
<div>
<pre>_______________________________________________
Uylug-programming mailing list
<a href="mailto:Uylug-programming@listas.uylug.org.uy" target="_blank">Uylug-programming@listas.uylug.org.uy</a>
<a href="http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy" target="_blank">http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy</a>
</pre>
</div>
</blockquote>
<span><font color="#888888"> <br>
<pre cols="72">--
Ivan Baldo - <a href="mailto:ibaldo@adinet.com.uy" target="_blank">ibaldo@adinet.com.uy</a> - <a href="http://ibaldo.codigolibre.net/" target="_blank">http://ibaldo.codigolibre.net/</a>
>From Montevideo, Uruguay, at the south of South America.
Freelance programmer and GNU/Linux system administrator, hire me!
Alternatives: <a href="mailto:ibaldo@codigolibre.net" target="_blank">ibaldo@codigolibre.net</a> - <a href="http://go.to/ibaldo" target="_blank">http://go.to/ibaldo</a>
</pre>
</font></span></div>
</blockquote>
</div>
</div>
</div>
<br>
</div>
<br>
_______________________________________________<br>
Uylug-programming mailing list<br>
<a href="mailto:Uylug-programming@listas.uylug.org.uy" target="_blank">Uylug-programming@listas.uylug.org.uy</a><br>
<a href="http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy" target="_blank">http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Uylug-programming mailing list
<a href="mailto:Uylug-programming@listas.uylug.org.uy" target="_blank">Uylug-programming@listas.uylug.org.uy</a>
<a href="http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy" target="_blank">http://listas.uylug.org.uy/listinfo.cgi/uylug-programming-uylug.org.uy</a>
</pre>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div>