Foros del Web » Programando para Internet » PHP »

Importar un txt a MySQL

Estas en el tema de Importar un txt a MySQL en el foro de PHP en Foros del Web. Necesito importar una serie de datos almacenados en un arcchivo.txt a una tabla MySQL. La estructuración del TXT es así: PREGUNTA 1 P: ¿Esto seria ...
  #1 (permalink)  
Antiguo 26/03/2006, 11:57
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Importar un txt a MySQL

Necesito importar una serie de datos almacenados en un arcchivo.txt a una tabla MySQL.

La estructuración del TXT es así:

PREGUNTA 1
P: ¿Esto seria una pregunta?
A: Una opción.
B: Otra opción
C: Mas opciones
D: y… aun más
Solución: B

PREGUNTA 2
P: Esto seria la pregunta nº 2
A: Una opción de pregunta 2.
B: Otra opción
C: Mas opciones de pregunta 2
D: Más de lo mismo
Solución: A




Y así consecutivamente hasta 100 preguntas.

Ahora bien la cuestión es, ¿Como agrupar cada pregunta pregunta con su grupo de opciones y su solución por cada registro de la tabla en MyQL?

Dejo la estructura de la tabla MySQL para que se me entienda mejor:
Código:
CREATE TABLE preguntas2 (
  id int(11) NOT NULL auto_increment,
  pregunta text NOT NULL,
  test int(11) NOT NULL default '0',
  n_pregunta int(11) NOT NULL default '0',
  res_a text NOT NULL,
  res_b text NOT NULL,
  res_c text NOT NULL,
  res_d text NOT NULL,
  buena text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Bueno, hay dejo la cuestión que me trae de cabeza desde hace ya varios días.

Haber si con la ayuda de alguien quedemos resolver esta cuestión.
Gracias
  #2 (permalink)  
Antiguo 26/03/2006, 12:45
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
yap...probado y funcionando

<?
$filas=file('preguntas.txt');
$i=0;
$numero_pregunta=1;
while($filas[$i]!=NULL){
$sql="INSERT INTO preguntas2(id,pregunta,test,n_pregunta,res_a,res_b ,res_c,res_d,buena) VALUES(";
$sql.="0,"; // id
$sql.="'".$filas[$i+1]."',"; // pregunta
$sql.="1,"; // no cache lo ke era el test
$sql.=$numero_pregunta.","; // numero de la pregunta almacenada en un contador
$sql.="'".$filas[$i+2]."',"; // respuesta a
$sql.="'".$filas[$i+3]."',"; // respuesta b
$sql.="'".$filas[$i+4]."',"; // respuesta c
$sql.="'".$filas[$i+5]."',"; // respuesta d
$sql.="'".$filas[$i+6]."')"; // solucion (buena)
$i+=8;
$numero_pregunta++;
echo "<br><br>".$sql;
}
?>

/********* esta es la salida ************

INSERT INTO preguntas2(id,pregunta,test,n_pregunta,res_a,res_b ,res_c,res_d,buena) VALUES(0,'P: ¿Esto seria una pregunta? ',1,1,'A: Una opción. ','B: Otra opción ','C: Mas opciones ','D: y… aun más ','Solución: B ')

INSERT INTO preguntas2(id,pregunta,test,n_pregunta,res_a,res_b ,res_c,res_d,buena) VALUES(0,'P: Esto seria la pregunta nº 2 ',1,2,'A: Una opción de pregunta 2. ','B: Otra opción ','C: Mas opciones de pregunta 2 ','D: Más de lo mismo ','Solución: A')

/**********************************

Si tenis mas preguntas de lo mismo , postea denuevo , ojala te sirva

saludos
  #3 (permalink)  
Antiguo 26/03/2006, 13:11
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Osea... que lo que a mi me trae de cabeza desde hace 2 semanas, tu lo resulves en unos 46 minutos?????????

Gracias bistoco, voy a probarlo...
  #4 (permalink)  
Antiguo 26/03/2006, 19:44
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
jajajajajja...la verdad fueron 5 minutos, pero eso es porke programo hace muchisimo tiempo,entonces uno ya conoce las soluciones porke ya estuvo 2 semanas pegao en los mismos problemas :P

Saludos
  #5 (permalink)  
Antiguo 26/03/2006, 19:58
 
Fecha de Ingreso: diciembre-2002
Ubicación: Toledo
Mensajes: 27
Antigüedad: 21 años, 4 meses
Puntos: 0
Me funciona a la perfeción, ahora trataré de comprender el codigo ... (la idea)

En fin, cuando me respondintes con el codigo, ya estaba exportando los archivos a XLS para despues desde Excel exportarlos a CVS y desde el phpmyadmin importarlos a la Bade de Datos... una tarea tarea muy dura... ya que son 51.000 preguntas y sus 4 respuestas correspondientes.

Con este codigo, en pocos minutos he realizado el trabajo....

Muchas Gracias por tu ayuda.
  #6 (permalink)  
Antiguo 26/03/2006, 20:13
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
En principio es facil .. lo que hace es leer el documento
la primera linea es la pregunta ..
las cuatro siguientes son las posibles respuestas ..
la sexta linea es la respueta correcta y asi sucesivamente .. de esta forma concatena y arma una sentencia SQL para luego ejecutarla .. o hacer lo que quieras .. la verdad que muy bueno .. siempre y cuando conoscas la estructura del documento a leer...
saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:19.