Foros del Web » Programando para Internet » PHP »

guardar datos de texto plano con delimitador en mysql con php

Estas en el tema de guardar datos de texto plano con delimitador en mysql con php en el foro de PHP en Foros del Web. hola buenos dias quisiera saber como leer la informacion de un texto plano y que cada vez que me encuentre un | me guarde la ...
  #1 (permalink)  
Antiguo 05/07/2011, 07:58
 
Fecha de Ingreso: julio-2011
Ubicación: cucuta
Mensajes: 26
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta guardar datos de texto plano con delimitador en mysql con php

hola buenos dias quisiera saber como leer la informacion de un texto plano y que cada vez que me encuentre un | me guarde la informacion anterior, me explico:

tengo un texto pplano archivo.txt y la información es la siguiente:


64340|30286777|LUZ MARINA CORDON RODRIGUEZ|(415)7709998000674(8020)06315180(3900)00 00104920(96)20100813|GM = 755.33+TM = 0+DM = 473.40+CM = 107.35 CM = 2118.05 $/FACTURA.|79958|901289892|JUAN VIANEY SUAREZ HERNANDEZ|(415)7709998000674(8020)06316555(3900)00 00132860(96)20100813|GM = 755.33+TM = 0+DM = 473.40+CM = 107.35 CM = 2118.05 $/FACTURA.|72725|30286836|LUZ MARINA PINZON MANRIQUE|(415)7709998000674(8020)06316010(3900)000 0071430(96)20100813|GM = 755.33+TM = 0+DM = 473.40+CM = 107.35 CM = 2118.05 $/FACTURA.|64332|30336183|FLOR ELVA FERRER FERRER|(415)7709998000674(8020)06315177(3900)00000 00000(96)20100813|GM = 755.33+TM = 0+DM = 473.40+CM = 107.35 CM = 2118.05 $/FACTURA.



esto es una pequeña muestra del texto q nececito guardar en mysql, yo necesito que cada vez que encuentre un | me guarde la informacion, de acuerdo a la informacion anterior el me tendria que guardar:

64340
30286777
LUZ MARINA CORDON RODRIGUEZ
(415)7709998000674(8020)06315180(3900)0000104920(9 6)20100813|GM = 755.33+TM = 0+DM = 473.40+CM = 107.35 CM = 2118.05 $/FACTURA.
79958
901289892
JUAN VIANEY SUAREZ HERNANDEZ

y asi sucesivamente

estoy capturando el archivo con un boton examinar y el delimitador en un cuadro de texto

de la siguiente manera:

Código HTML:
Ver original
  1. <form id='f1' action='si.php'>
  2.         <center>
  3.             <table width=" " height=" " border="1"  BGCOLOR="red" CELLSPACING="0" bordercolor="blue">
  4.                 <tr>
  5.                     <td COLSPAN="3" ALIGN="center">GUARDAR ARCHIVO EN BASE DE DATOS</td>
  6.                 </tr>
  7.  
  8.                 <tr>
  9.                     <td>
  10.                 archivo
  11.                     <input type='file' name='f' value='ingresa tu archivo'/><br/>
  12.                     </td>
  13.                     <td>
  14.                 delimitador
  15.                     <input type='text' name='d' value='|'/>
  16.                     <input type='submit' value='cargar'/>
  17.                     </td>
  18.                 </tr>
  19.             </table>
  20.         </center>      
  21.     </form>


y lo estoy capturando en un codigo.php
de la siguente manera:

Código PHP:
Ver original
  1. //aqui capturo el texto plano
  2. $fname = $_GET['f'];
  3. //aqui capturo el delimitador
  4. $delim = $_GET['d'];
  5. $row = 1;
  6. //se supone que aqui recorro el texto plano, pero nose si esta bien
  7. $fp = fopen ($fname,"r");
  8. //el me deberia entrar al ciclo pero no entra y nose porque, el error esta en la linea anterior o en este ciclo
  9. while ($data = fgetcsv ($fp, 1000,"|"))
  10. {
  11.    
  12. $num = count ($data);
  13. echo $fname;
  14. echo $delim;
  15. print "<p> $num campos en la linea $row: <br />";
  16. $row++;
  17. //echo $data[0];
  18. $actualizar=("LOAD DATA LOCAL INFILE '$fname' REPLACE INTO TABLE tabla
  19. FIELDS TERMINATED BY '$delim' LINES TERMINATED BY '\n'");
  20.  
  21. }
  22.  $consulta=mysql_query($actualizar);



agradezco su colaboracion....
  #2 (permalink)  
Antiguo 05/07/2011, 08:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: guardar datos de texto plano con delimitador en mysql con php

Puedes separar los datos del archivo con explode.

http://www.php.net/manual/es/function.explode.php

Ahora los tendrás como un array y podrás manipularlos para introducirlos en la BD.
__________________
----
http://www.mascodigo.com
  #3 (permalink)  
Antiguo 05/07/2011, 09:29
 
Fecha de Ingreso: julio-2011
Ubicación: cucuta
Mensajes: 26
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Respuesta: guardar datos de texto plano con delimitador en mysql con php

ya reemplace

fgetcsv ($fp, 1000,"|") por esto explode("|",$fp)

y si me entro al ciclo


pero no me guarda nada en la base de datos

y reemplazo

$actualizar=("LOAD DATA LOCAL INFILE '$fname' REPLACE INTO TABLE tabla
FIELDS TERMINATED BY '$delim' LINES TERMINATED BY '\n'");


por


mysql_query("INSERT INTO tabla (codigo, nombre, apellido, edad, ciudad)
VALUES ('$data[0]','$data[1]', '$data[2]', '$data[3]','$data[4]')");


y me guarda 27,376 registros en la base de datos
y el archivo solo tiene 4 lineas de 5 campos cada una

no hay una forma de guardar cada linea en la base de datos usando el load data local infile, y usando tambien la funcion explode o la fgetcsv nose uds ayudenme porque con la explode me entra al ciclo con la fgetcsv no me entra y no se que hacer

Etiquetas: delimitadores, mysql, texto-plano, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:22.