Foros del Web » Programando para Internet » PHP »

PHP- Leer .txt y cargar en Mysql

Estas en el tema de PHP- Leer .txt y cargar en Mysql en el foro de PHP en Foros del Web. Hola buen día, les comento como muchos otros soy nueva, tanto en el foro como en la programación php, he estado buscando por aqui algun ...
  #1 (permalink)  
Antiguo 22/08/2012, 14:44
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Pregunta PHP- Leer .txt y cargar en Mysql

Hola buen día, les comento como muchos otros soy nueva, tanto en el foro como en la programación php, he estado buscando por aqui algun tema que me ayude, y he encontrado algo similar, pero tengo problemas para poder hacerlo funcionar en mi caso particular, la situación es la siguiente. Tengo un archivo en la misma carpeta que mi proyecto, el archivo se llama 'archivo.txt' y el contenido de dicho archivo es el siguiente:

1|Jorge|Pérez Campos|informatico|27|León
2| Pedro| Diez Santamarta| diseñador| 22| Salamanca
3| Luis| Ruiz Campos| dibujante| 27| Zamora


Es un archivo de texto plano con cada campo separado por pipes.

Tengo mi base de datos en MySQL con la tabla usuarios con la siguiente estructura...

create table users (
id int not null,
nombre varchar(20),
apellidos varchar(100),
profesion varchar(40),
edad int,
ciudad varchar(20),
constraint pk primary key (id)
)


Bueno, tengo mi archivo .php con el que quiero que se efectue el proceso de carga de esos registros que tiene mi .txt en mi tabla users de MySQL, lo mas cercano que encontre son estos temas:

[URL="http://www.forosdelweb.com/f18/importar-txt-mysql-381216/"]http://www.forosdelweb.com/f18/importar-txt-mysql-381216/[/URL]
[URL="http://www.forosdelweb.com/f18/cargar-txt-mysql-794679/"]http://www.forosdelweb.com/f18/cargar-txt-mysql-794679/[/URL]

y bueno he tratado de adaptarlos a mi .php pero pues creo que solo he destrozado el código, lo unico que he podido lograr con un ejemplo que vi por aqui igualmente, es que leea los datos del .txt y los imprima con un foreach... el ejemplo lo obtuve de aqui.

[URL="http://www.forosdelweb.com/f18/lectura-archivo-txt-separado-por-comas-819082/"]http://www.forosdelweb.com/f18/lectura-archivo-txt-separado-por-comas-819082/[/URL]

y bueno intente hacerlo con un load data in file desde php pero ni me envia errores al ejecutarlo (con el localhost, tengo wamp instalado) ni me inserta nada en mysql.. es script es el siguiente:

<?php
$con = mysql_connect('localhost', 'root', '');
mysql_select_db("webtest", $con);
$ubicacion="c:\webtest\archivo.txt";

$query="load data local infile '$ubicacion' into table users fields terminated by '|' lines terminated by '\n'
(id,nombre,apellidos,profesion,edad,ciudad);"
;

mysql_query($query);

?>


bueno otra manera que estaba intentando era leer cada linea y luego guardar cada campo en variables y luego insertarlas en la tabla, pero debo decir, tampoco me funciona, lo unico que logro es que me imprima el contenido de las variables, mas no me realiza el insert :/, el codigo es el siguiente:

<?php
$con = mysql_connect('localhost', 'root', '');
mysql_select_db("webtest", $con);

$filas=file('archivo.txt');
foreach($filas as $value){
list($id, $nombre, $apellidos, $profesion, $edad, $ciudad) = explode("|", $value);

echo 'Id: '.$id.'<br/>';
echo 'Nombre: '.$nombre.'<br/>';
echo 'Apellidos: '.$apellidos.'<br/>';
echo 'Profesión: '.$profesion.'<br/>';
echo 'Edad: '.$edad.'<br/>';
echo 'Ciudad: '.$ciudad.'<br/><br/>';

$insert = "INSERT INTO users(id,nombre,apellidos,profesion,edad,ciudad) VALUES ($id, $nombre, $apellidos, $profesion, $edad, $ciudad)";
$resultado=mysql_query($insert, $con);
}
?>


Agradecería demasiado su ayuda, enserio la necesito y estoy algo perdida con esto, muchísimas gracias, y perdón si estoy siendo redundante en el tema, solo que no puedo adaptar los ejemplos que veo a mi caso en particular y necesito orientación para poder ver en que estoy mal...MUCHAS GRACIAS"
  #2 (permalink)  
Antiguo 22/08/2012, 14:53
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: PHP- Leer .txt y cargar en Mysql

Con la segunda forma no te funciona po que te faltan los apostrofes:
VALUES ($id, $nombre, $apellidos, $profesion, $edad, $ciudad)";

VALUES ('$id',' $nombre', '$apellidos', '$profesion',' $edad', '$ciudad')";
  #3 (permalink)  
Antiguo 22/08/2012, 15:50
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: PHP- Leer .txt y cargar en Mysql

Cita:
Iniciado por ocp001a Ver Mensaje
Con la segunda forma no te funciona po que te faltan los apostrofes:
VALUES ($id, $nombre, $apellidos, $profesion, $edad, $ciudad)";

VALUES ('$id',' $nombre', '$apellidos', '$profesion',' $edad', '$ciudad')";
Muchas Gracias! Era algo muy sencillo y obvio que no lo veia, me funciona perfectamente, espero que el script le pueda servir a alguien más. Saludos!!
  #4 (permalink)  
Antiguo 27/08/2012, 16:00
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: PHP- Leer .txt y cargar en Mysql

Hola, de nuevo yo, ahora tengo otras preguntas mas sobre este script, bueno un detalle que pude notar es que no se cargan bien los registros a menos de que en el archivo .txt después de cada '|' tiene que haber un espacio. por que si no le pongo los espacios me inserta los primeros dos registros sin el id...solo el del último.. y no se por que.

Este es el contenido del .txt de manera que funcione:

1| Jorge| Pérez Campos| informatico| 27| León| B
2| Pedro| Diez Santamarta| diseñador| 22| Salamanca| B
3| Luis| Ruiz Campos|dibujante| 27| Zamora| B


Pero bueno, lo que quiero hacer enseguida de haber insertado los registros en la tabla, es obtener el id y el perfil de todos esos registros e insertarlos en otra tabla. Tengo esta estructura para mis tablas:
Código MySQL:
Ver original
  1. create database webtest;
  2. use webtest:
  3.  
  4. create table users (
  5.     id int not null,
  6.      nombre varchar(20),
  7.     apellidos varchar(100),
  8.     profesion varchar(40),
  9.     edad int,
  10.     ciudad varchar(20),
  11.     perfil char(2),
  12.     constraint pk primary key (id)
  13. );
  14.  
  15. create table modulo_permisos (
  16.     id_modulo int auto_increment,
  17.     id_users int not null,
  18.     perfil varchar(40),
  19.     constraint pk_p primary key (id_modulo)
  20.    );

y mi script de php quedo como sigue:
Código PHP:
Ver original
  1. <?php
  2. $con = mysql_connect('localhost', 'root', '');
  3. mysql_select_db("webtest", $con);
  4.  
  5. $filas=file('archivo.txt');
  6. foreach($filas as $value){
  7.     list($id,$nombre,$apellidos,$profesion,$edad,$ciudad,$perfil) = explode("|", $value);
  8.  
  9. $insert = "INSERT INTO users(id,nombre,apellidos,profesion,edad,ciudad,perfil) VALUES ('$id','$nombre','$apellidos','$profesion','$edad','$ciudad','$perfil')";
  10. $resultado=mysql_query($insert, $con);
  11.  
  12. $sql="SELECT id, perfil FROM users;";
  13. $ejecuta = mysql_query($sql,$con);
  14.    
  15.         while ($row = mysql_fetch_array($ejecuta))
  16.         {
  17.         //RECUPERAr columna id_ perfil
  18.         $id_users=$row['id'];
  19.         $id_perfil=$row['perfil'];
  20.         }
  21.  
  22. $insert2 = "INSERT INTO modulo_permisos (id_users,id_perfil) VALUES ('$id_users','$id_perfil')";
  23. mysql_query($insert2,$con);
  24.  
  25. }
  26. ?>



Les comento, que cuando lo ejecuto, si me inserta los registros en la tabla users, pero no me inserta nada en la tabla modulo_permisos :/
Podrían ayudarme por favor? No se que moverle.

Última edición por art_rockerd; 15/02/2013 a las 16:34 Razón: dar formato a codigo

Etiquetas: lad, mysql, txt
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 18:32.