Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema copiando un .csv

Estas en el tema de Problema copiando un .csv en el foro de Mysql en Foros del Web. Buen dia. Estoy creando una base de datos para almacenar el contenido de unos .csv, la base de datos va asi: Código: tlf_av bigint(20) central ...
  #1 (permalink)  
Antiguo 10/09/2009, 09:25
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema copiando un .csv

Buen dia.

Estoy creando una base de datos para almacenar el contenido de unos .csv, la base de datos va asi:
Código:
tlf_av bigint(20)
central text
empresa text
cola text
tipo_av text
cuadrilla text
nombre text
apellido text
estado text
nom_area text
hora timestamp
uni_n text
cc/cd text
pc/pd text
asd text
p_local text
fuente text
fecha timestamp
dias_pend text
rango text
idbigint(20) unsigned AUTO_INCREMENT
Googleando me tope con un codigo que copia los datos del .csv a la bd, luego de modificarlo para adaptarlo a mi bd quedo asi:
Código:
$fp = fopen ('c:/captura.csv', 'r');
        while ($data = fgetcsv ($fp,1000,'^')){
        $insertar="INSERT INTO averias(tlf_av,central,empresa,cola,tipo_av,cuadrilla,nombre,apellido,estado,nom_area,hora,uni_n,cc/cd,pc/pd,asd,p_local,fuente,fecha,dias_pend,rango) VALUES ('$data[0]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]');";
        mysql_query($insertar) or die(mysql_error());
        echo "$insertar ok <br />";
        }
        fclose($fp);
Obviamente me conecto a la base de datos y todo eso previo a ejecutar el fopen, pero me tira el siguiente error:

Código:
Notice: Undefined offset: 2 in C:\wamp\www\averias\guardar_captura.php on line 10
Y continua el Undefined offset hasta 19 (o sea de 2 a 19) ademas de:
Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/cd,pc/pd,asd,p_local,fuente,fecha,dias_pend,rango) VALUES ('2814451361;8169;CAN' at line 1
  #2 (permalink)  
Antiguo 10/09/2009, 09:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema copiando un .csv

¿Has probado a usar LOAD DATA INFILE?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/09/2009, 09:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema copiando un .csv

Voy a probarlo, gracias

Edit: necesariamente tiene que ser .txt? D:

Edit2: si me funciono :D muchisimas gracias por la ayuda

Edit3: el query funciona en mysql, sin embargo, al intentar en php me tira un error, el codigo va asi:

Código:
mysql_connect($host, $user, $pw);
mysql_select_db($dbname) or die("No se pudo seleccionar la base de datos");
$copiar="LOAD DATA INFILE 'c:/captura.csv' INTO TABLE averias FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'";
mysql_query($copiar) or die(mysql_error());

y me tira lo siguiente al ejecutar:

Código:
Incorrect integer value: '>=55d' for column 'id' at row 1
Ahora cual es el problema? >.< si funciona en el mysql por que esta dando error aca en php?

Edit4: ya esta listo, me falto colocar LOCAL entre load data e infile XD
Gracias una vez mas por la ayuda

Última edición por Agrus; 10/09/2009 a las 12:02
  #4 (permalink)  
Antiguo 10/09/2009, 13:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema copiando un .csv

Ok pense que ya estaba resuelto pero se me presento otro problema >.<

Cuando ejecuto el query en el mysql no me da problema, el query va asi:
Código:
LOAD DATA INFILE 'c:/captura.csv' INTO TABLE averias FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'
Cuando lo ejecuto desde php me da el siguiente error:
Código:
Row 1 doesn't contain data for all columns
Hay alguna manera de que obvie la ultima columna de la base de datos? =/

Edit: aparentemente colocar el LOCAL resuelve todo

Última edición por Agrus; 10/09/2009 a las 13:19 Razón: Solventado el problema XD
  #5 (permalink)  
Antiguo 10/09/2009, 13:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema copiando un .csv

Es el mismo problema que tienes con postgres.

Sea en mysql o en postgres, debes establecer las columnas que serán incluidas y tener la id como auto_increment.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 01:32.