Comunidad de diseño web y desarrollo en internet online

Leer txt y guardar en Mysql, nivel un poco avanzado

Citar            
MensajeEscrito el 17 Ago 2016 09:17 pm
Que tal compañeros, tengo un problema creo que bastante grandesito :cry:

estoy leyendo un archivo .txt el cual está delimitando la filas por '\t' y los campos por ',' y guardando en una base de datos, el problema es que dicho archivo se creció un poco y ahora hay campos delimitados por ';' los cuales se encuentran dentro de otro gran campo delimitado por ' " '
a continuacion les dejo el NUEVO .txt con dos filas delimitadas por '\t'

1,2468902,"ESTUDIO:Glucosa Basal;RESULTADO:111;UND MEDIDA:mg/dl;VLR REF:70 -;;100<br>ESTUDIO:Glucosa Post;RESULTADO:161;UND MEDIDA:mg/dl;VLR REF:;;<br>",08/08/2016,903843,77882
2,24689022,"ESTUDIO:Glucosa Basal;RESULTADO:111;UND MEDIDA:mg/dl;VLR REF:70 -;;100<br>ESTUDIO:Glucosa Post;RESULTADO:161;UND MEDIDA:mg/dl;VLR REF:;;<br>",02/02/2016,9038432,778822

lo que tuve haciendo hasta el momento fue algo como esto:

<?php

$conexion = new mysqli("localhost", "root", "", "bd");

$filas = file('archivo.txt');
foreach ($filas as $value) {
list($id, $dni, $estudio) = explode(",", $value);
echo 'Id: '.$id.'<br/>';
echo 'Carnet: '.$dni.'<br/>';
echo 'Estudio: '.$estudio.'<br/>';
echo "<hr>";
$insert = "INSERT INTO examenes(id,dni,examen) VALUES ('$id', '$dni','estudio')";
$conexion -> query($insert);
}
//claro el .txt era mas corto y todo funcionaba...

?>

Alguna idea de como leer el nuevo .txt crecidito y delimitado por diferentes caracteres? tal vez con algún while que mientras encuentre ',' valla guardando los campos en una variable y mientras todo lo que esta dentro de ' " ' y separados por ' ; ' los valla almacenando en otras variables para al final hacer un solo insert, o tal vez haciendo varios insert no se. Lo he intentado pero no me ha dado la cabeza, por favor ayudenme, se los agradezco infinitamente. si necesitan mas detalles o una explicacion mas personal con mucho gusto estoy siempre en el Pc...

Por martinezjs21

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ago 2016 04:38 am
con "\t" me refiero al retorno de carro o al comiezo de una nueva linea pero podemos olvidar eso ya que en si les voy a dejar el .txt original para que le echen un vistazo
[img]https://drive.google.com/open?id=0B4jX3ZIQMc9qa3lFQ19sQ3E3Mlk[/img]
ahi una imagen y aqui el enlace al archivo para que lo detallen mejor https://drive.google.com/open?id=0B4jX3ZIQMc9qY2FLcXlSWFBmMGc

quiero guardar ese .txt en un BD mysql, tengase en cuenta que el campo1 es el id, el campo2 es el dni, el campo3 es el tipo de estudio, el campo4 es el resultado, es campo5 es la unidad de medida y asi sucesivamente...

Por martinezjs21

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Ago 2016 02:28 pm
es un archivo CSV, php cuenta con funciones para tratar dichos archivos, y \t es el caracter de TABULACION no el retorno de carro que es \r

http://php.net/manual/es/splfileobject.fgetcsv.php

y luego esta

http://php.net/manual/es/splfileobject.setcsvcontrol.php


la razon por la que no te funciona es por la memoria ram, funciones como "file" obtiene el archivo y lo carga a la RAM

no se de cuanto sera tu archivo,pero en caso de ser gigantesca prueba lo de los enlaces , de no funcionar, tendrias que armar lecturas parciales del archivo
osea leer del byte 0 al 128 y buscar salto de linea de encontrar el salto de linea,cortar y contar y volver a repetirlo,tienes funciones fopen, fgets,fseek para moverte por bytes

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.