Foros del Web » Programando para Internet » PHP »

introducir un archivo .csv a la base de datos

Estas en el tema de introducir un archivo .csv a la base de datos en el foro de PHP en Foros del Web. Hola a todos. esoy usando prestashop y mi pregunta en este foro es porque necesito un script para introducir un catalogo de unos 2300 articulos ...
  #1 (permalink)  
Antiguo 27/08/2012, 16:58
 
Fecha de Ingreso: enero-2012
Ubicación: malaga
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
introducir un archivo .csv a la base de datos

Hola a todos.
esoy usando prestashop y mi pregunta en este foro es porque necesito un script para introducir un catalogo de unos 2300 articulos directamente a la base de datos.Imagino que habra algo ya hecho que sirva para importar a la base de datos y a la tabla correspondiente un archivo .csv ya que por el propio prestashop no puedo ya que al parecer me corta por tiempo el servidor y no tengo opcion a alargar ese tiempo.Pense en que si puedo introcucir esos datos direvtamente en mysql mediante un script soluciono el problema ya que de ese moco los datos los cojeria la tienda y se actualizaria correcamente y podre por fin ponerla online porque la tengo solo a falta de poder introcucir el archivo .csv que me manda el distribuidor.

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 27/08/2012, 17:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 70
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: introducir un archivo .csv a la base de datos

pues no se si en mysql pero en postgres hay una funcion que se llama copy y copia archivos cvs creo que la sintaxis es COPY 'tabla' from ''ruta del archivo';

saludos.
  #3 (permalink)  
Antiguo 28/08/2012, 03:13
 
Fecha de Ingreso: enero-2012
Ubicación: malaga
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: introducir un archivo .csv a la base de datos

Gracias por responderme june,pero en mysql es igual? y lo copio desde el direstorio que este a la tabla que yo elija?.Si me lo pudieras indicar te lo agradeceria porque si fuera asi aunque no es la manera normal de introducir el csv lo haria de esta forma y al menos voy saliendo del paso.
Gracias.
  #4 (permalink)  
Antiguo 28/08/2012, 09:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 70
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: introducir un archivo .csv a la base de datos

pues investiga en la documentacion de mysql nunca lo eh hecho porque yo utilizo postgres pero yo me imaginoq ue si porque es sql, saludos.
  #5 (permalink)  
Antiguo 28/08/2012, 10:08
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: introducir un archivo .csv a la base de datos

te dejo una liga

http://www.forosdelweb.com/f18/aport...mysql-1005248/

se puede hacer exportaciones pasando tu csv a ods y de ahí importarlo directamente a phpmyadmin , el problema con el que me tope fue que me mezclaba datos de las columnas , por eso hice el script
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 28/08/2012, 11:00
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 17 años, 11 meses
Puntos: 58
Respuesta: introducir un archivo .csv a la base de datos

No tienes ningún servidor local en tu PC? Para importaciones grandes descargarías la base de datos actual, la importarías a tu base de datos local, cambias el tiempo de ejecucion en php.ini y ya puedes actualizarlo por muy grande que sea. Luego vuelves a importar la base de datos local al servidor.

Tambien puedes dividir el csv en varios archivos más pequeños e importarlos.

De todas formas 2300 registros no me parecen muchos como para que al servidor no le de tiempo a importar el archivo y creo que si no le da tiempo ha realizarlo directamente es probable que mediante un script tampoco... no lo sé.
  #7 (permalink)  
Antiguo 28/08/2012, 11:21
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: introducir un archivo .csv a la base de datos

Soluciones para tu problema yo veo dos:
  • Usar directamente el exportador de phpmyadmin que hace el proceso de manera limpia sin preocuparse.
  • Ha a traves de la consola de sql directamente ingresando el comando.

La desventaja del primero es el tiempo maximo de ejecución por eso la mejor opción a mi parecer es la segunda.

Puedes adaptar este post a tus necesidades

http://www.tech-recipes.com/rx/2345/...ly_into_mysql/
__________________
Blog de humor http://elcuasatar.net63.net/
  #8 (permalink)  
Antiguo 28/08/2012, 17:14
Avatar de manueldelavega  
Fecha de Ingreso: agosto-2012
Mensajes: 5
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: introducir un archivo .csv a la base de datos

La forma en la que puedes subir un .csv a una tabla en mysql es escribiendo un script en PHP, la solución es la siguiente:

$archivo = fopen ("miarchivo.csv","r");
while ($arregloarchivo = fgetcsv ($archivo, 1000, ",")){
//guardar registros en variables
$valor1 = trim($arregloarchivo[0]);
$valor2 = trim($arregloarchivo[1]);

//insertas en la tabla
$consulta = "INSERT INTO tabla (val1,val2)
VALUES ('$valor1','$valor1')";
$resultados = mysql_query($consulta,$conexion);
}

//cierras el archivo
fclose ($archivo);

El archivo .csv está separado por comas por lo que el valor entre [ ] indica el numero de la columna de la cual se tomara el dato y como se utiliza un ciclo while se empezara a leer desde la fila 0 hasta el fin del archivo. Te recomiendo hacer pruebas antes.
  #9 (permalink)  
Antiguo 30/08/2012, 06:39
 
Fecha de Ingreso: enero-2012
Ubicación: malaga
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: introducir un archivo .csv a la base de datos

sois unos maquinas de veras,gracias por responderme y ademas darme tantas posibles soluciones,voy probando y os digo.

De nuevo gracias

Etiquetas: csv, introducir, mysql, tabla
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 20:03.