Foros del Web » Programando para Internet » PHP »

Actualizar/insertar/ eliminar datos Mysql desde .csv

Estas en el tema de Actualizar/insertar/ eliminar datos Mysql desde .csv en el foro de PHP en Foros del Web. Hola, como andan? hace un tiempo estoy usando un script para actualizar o insertar nuevos datos desde un archivo csv a mysql, lo que necesito ...
  #1 (permalink)  
Antiguo 31/01/2013, 12:10
 
Fecha de Ingreso: marzo-2012
Ubicación: Rosario
Mensajes: 108
Antigüedad: 8 años, 3 meses
Puntos: 0
Actualizar/insertar/ eliminar datos Mysql desde .csv

Hola, como andan? hace un tiempo estoy usando un script para actualizar o insertar nuevos datos desde un archivo csv a mysql, lo que necesito es agregarle el borrado en el caso de que el articulo que este en la base de datos en el archivo csv no exita, ya que me estan quedando en la base de datos articulos que ya no van a volver a ingresar

Este es el codigo que uso actualmente:
Código PHP:
<?php 

$row 
1
$fp fopen ("ART-E.csv","r"); 
while (
$data fgetcsv ($fp10000";")) 

$num count ($data); 
print 
" <br>"
$row++; 
echo 
"$row- ".$data[0].$data[1].$data[2]; 

if(!
mysql_num_rows(mysql_query("SELECT codigo FROM articulos WHERE codigo='$data[0]'"))){ 
mysql_query("INSERT INTO articulos (codigo,descripcion,precio) VALUES ('$data[0]','$data[1]','$data[2]')"); 
}else{
mysql_query("update articulos set descripcion='$data[1]', precio='$data[2]' where codigo=$data[0]'"); 
}
}

fclose ($fp); 
?>
Gracias de antemano
  #2 (permalink)  
Antiguo 01/02/2013, 18:57
 
Fecha de Ingreso: septiembre-2005
Ubicación: Ourense
Mensajes: 25
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Actualizar/insertar/ eliminar datos Mysql desde .csv

Hola, yo haría lo siguiente, añadir una nueva columna a la tabla articulos,
por ejemplo ultima_actualización de tipo integer.

Recoger el timestamp del sistema antes de procesar los datos del csv:

Código PHP:
$marca_time time(); 
Posteriormente en cada inserción o update marcar la fila con el timestamp
recogido.

Código PHP:
if(!mysql_num_rows(mysql_query("SELECT codigo FROM articulos WHERE codigo='$data[0]'"))){  
mysql_query("INSERT INTO articulos (codigo,descripcion,precio, ultima_actualizacion) VALUES ('$data[0]','$data[1]','$data[2]', $marca_time)");  
}else{ 
mysql_query("update articulos set descripcion='$data[1]', precio='$data[2]', ultima_actualizacion = $marca_time where codigo=$data[0]'");  


finalmente una vez cerrado el csv eliminar las lineas no actualizadas en la marca generada:

Código PHP:
mysql_query("DELETE FROM articulos WHERE ultima_actualizacion != ".$marca_time); 
  #3 (permalink)  
Antiguo 05/03/2013, 09:33
 
Fecha de Ingreso: febrero-2013
Mensajes: 25
Antigüedad: 7 años, 4 meses
Puntos: 1
Respuesta: Actualizar/insertar/ eliminar datos Mysql desde .csv

Hola.

Otra manera de hacerlo, si quieres que los datos del csv son los que te queden realmente en la tabla. Mientras recorres el csv insertando los datos, ve guardandote en una cadena el código del artículo que imagino sera único.

Y una vez terminada la importación, haces un (not in) con todos los artículos, así los que te salgan son los que no estaban en el csv, y los puedes borrar.

Un saludo

Etiquetas: csv, mysql, registros
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:38.