lunes, 21 de diciembre de 2009

Exportar CSV a Mysql

function exportarCSV_a_mySQL($fileCSV)
{
 $registros=0;
 
 $ruta=$fileCSV['tmp_name'];
 
 if(!file_exists($ruta))
 {return false;}
 
 $tabla=quitar_extension($fileCSV['name']);
 
 $borra_tabla="DROP TABLE `".$tabla."`";
 mysql_query($borra_tabla);
 $f=fopen($ruta,"r");
 if($f)
 {
  echo "<b>Guardando CSV en la BDD :</b><br />";
  $contenido=fread($f,filesize($ruta));
  fclose($f);
  $contenido=ereg_replace("\r\n", "\n" , $contenido); // convertimos windows a unix
  $lineas=explode("\n",$contenido);
  $titulo=explode(";",$lineas[0]);
  $NUM_CAMPOS=count($titulo);
  $sql_generado_para_eliminar="";
  $crear_tabla_campos="";
  for($i=0;$i<$NUM_CAMPOS;$i++)
  {
  $titulo[$i]=ereg_replace("\"", "" , $titulo[$i]); // kitamos comillas
  $sql_generado_para_eliminar.=" AND `".$titulo[$i]."` =''";
  $crear_tabla_campos.="`".$titulo[$i]."` varchar(60) NOT NULL";
   if($i+1!=$NUM_CAMPOS)// si no es el ultimo , ponemos coma
   {
   $crear_tabla_campos.=",";
   }
  }
  $crear_tabla="CREATE TABLE `".$tabla."` (".$crear_tabla_campos.") ENGINE=MyISAM DEFAULT CHARSET=latin1;";
  mysql_query($crear_tabla);
  $linea=1;
  do
  {
   $insertar_titulos="";
   $insertar_campos="";
   $campo=explode(";",$lineas[$linea]);
   for($i=0;$i<$NUM_CAMPOS;$i++)
   {
   $campo[$i]=ereg_replace("\"", "" , $campo[$i]);
   $insertar_titulos.=" `".$titulo[$i]."` ";
   $insertar_campos.=" '".$campo[$i]."' ";
    if($i+1!=$NUM_CAMPOS)// si no es el ultimo , ponemos coma
    {
    $insertar_titulos.=",";
    $insertar_campos.=",";
    }
   }
   $sql="INSERT INTO `".$tabla."` ( ".$insertar_titulos." ) VALUES ( ".$insertar_campos." );";
   if(mysql_query($sql))
   {
   echo ". ";
   $registros++;
   }
   else
   {echo "X ";return false;}
  $linea++;
  }while(next($lineas));
 
 $sql="DELETE FROM `".$tabla."` WHERE 1".$sql_generado_para_eliminar;mysql_query($sql);
 echo "<br />";
 return $tabla;
 }
 else
 {
 return false;
 }
}
 
function quitar_extension($archivo)
{
 $extension = strrchr($archivo,".");
 $pos=strpos($archivo,$extension);
 return substr($archivo,0,$pos);
}


Código ejemplo de llamada / Code exmple call :

$tabla = exportarCSV_a_mySQL($_FILES['archivo_csv']);
if($tabla)
{
echo "Export OK in mysql table : ".$tabla;
}
else
{
echo "Error in export ...";
}

No hay comentarios:

Publicar un comentario