Hola.
cuento rápidamente, tengo que cargar un fichero CSV a mi base de datos (mysql), comparar existencia, y aplicar update si corresponde.
bien, esa es la parte facil
Problema:
1)mas de 5000 registros termina saturando el servidor y puff... inserta los registros hasta que cae.
2)tengo que traer el archivo en utf-8, el programa que exporta el archivo me lo da en ascci
Solucion tratada:
1) dividir el archivo en 5000 registros cad uno
2) guardar con notepad en utf-8
Requiero:
1)poder cargar los 10000 o 100000 registros de un unico archivo sin dividirlo.
2)convertir archivo cuando se hace el upload a utf-8
Me gustaría:
1)mostrar barra de progreso de upload+proceso del csv a la db (se que se requiere ajax)
Bien, he intentado de todo pero se ve que mis conocimientos no son suficientes.
dejo fragmento de mi código, el cual no tiene mucha ciencia, pero mas o menos para que se entienda..
Si alguno conoce algún ejemplo por ahi que pueda adaptar a mi codigo, les estaria muy agradecido.
PD: $borraRenglon es porque y no se por que, la primer linea del CSV se sube a la db con un caracter invisible, asi que le puse el borrar renglon que lleva ese caracter y lo elimino asi,.
cuento rápidamente, tengo que cargar un fichero CSV a mi base de datos (mysql), comparar existencia, y aplicar update si corresponde.
bien, esa es la parte facil
Problema:
1)mas de 5000 registros termina saturando el servidor y puff... inserta los registros hasta que cae.
2)tengo que traer el archivo en utf-8, el programa que exporta el archivo me lo da en ascci
Solucion tratada:
1) dividir el archivo en 5000 registros cad uno
2) guardar con notepad en utf-8
Requiero:
1)poder cargar los 10000 o 100000 registros de un unico archivo sin dividirlo.
2)convertir archivo cuando se hace el upload a utf-8
Me gustaría:
1)mostrar barra de progreso de upload+proceso del csv a la db (se que se requiere ajax)
Bien, he intentado de todo pero se ve que mis conocimientos no son suficientes.
dejo fragmento de mi código, el cual no tiene mucha ciencia, pero mas o menos para que se entienda..
Si alguno conoce algún ejemplo por ahi que pueda adaptar a mi codigo, les estaria muy agradecido.
Código [Seleccionar]
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>"method="post">
<label>Seleccione el archivo formato CSV:</label>
<input size="50" type="file" name="filename2"/>
<input type="submit" name="cargararchivo2" value="Cargar"/>
</form>
<?php
if (isset($_POST['cargararchivo2']))
{
if (is_uploaded_file($_FILES['filename2']['tmp_name'])){}
$handle = fopen($_FILES['filename2']['tmp_name'], "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$query = sprintf("SELECT carton,numerocert FROM regcertificados WHERE regcertificados.carton = '%s' AND regcertificados.numerocert = '%s'" , $data[6],$data[9]);
$result=mysql_query($query,$link);
if (mysql_num_rows($result))
{
if ($data[14]!="")
{
$fecha=date ("Y-m-d H:i:s");
$data[14] = addslashes ($data[51]);
$actualiza="UPDATE regcertificados SET prorroga='$data[14]',actualizado='$fecha' WHERE carton = '$data[6]' AND numerocert='$data[9]'";
mysql_query($actualiza,$link) or die(mysql_error());
}
}else
{
$fecha=date ("Y-m-d H:i:s");
$data[1] = addslashes ($data[1]);
$data[2] = addslashes ($data[2]);
$data....
......//el resto
$import="INSERT into regcertificados(dni,nombre......) values('$data[0]','$data[1]','$data......')";
mysql_query($import,$link) or die(mysql_error());
}
}
fclose($handle);
$borraRenglon="DELETE FROM regcertificados WHERE dni LIKE '%borrar renglon'";
mysql_query($borraRenglon,$link) or die(mysql_error());
echo '<div class="alert alert-success">';
echo '<button type="button" class="close" data-dismiss="alert">×</button>';
echo '<strong>Hecho</strong> Los datos incluidos en '.$_FILES["filename"].' se importaron correctamente.';
echo '</div>';
}
?>
PD: $borraRenglon es porque y no se por que, la primer linea del CSV se sube a la db con un caracter invisible, asi que le puse el borrar renglon que lleva ese caracter y lo elimino asi,.