bueno, yo me encontre con un caso similar hace poco y prepare este script, me funciono perfecto, gracias a la ayuda de la gente del foro, funciona para archivos csv, o sea que todos los datos que pertenecen a una persona estan en la misma linea, separados por ".....","......","......"
Código PHP:
//Abrimos el archivo
$archivo = fopen ("datos.csv", "r");
//Comprobamos que existe
if (!$archivo) {
echo "<p>Imposible abrir el archivo.\n";
exit;
}
//Dibujamos el encabezado de la tabla
echo "<table cellspacing=\"0\" border=\"1\"><tr><td> </td><td>Nombre</td><td>Calle</td><td>Ciudad</td><td>Codigo Postal</td></tr>";
//Hacemos un bucle que lea linea por linea
while ($salida = fgetcsv ($archivo, 1000, ",")) {
$cont++;
//Marcamos los caracteres no valido para guardarse en la BD
foreach ($salida as $k => $v){
$salida[$k] = addslashes($salida[$k]);
}
//Inserta los datos a la BD,
mysql_query("INSERT INTO entidades ( id, nom, carrer, poblacio, codi) VALUES ('', '".$salida[0]."', '".$salida[1]."', '".$salida[2]."', '".$salida[3]."')", $enlacebd);
//Mostrabmos los datos insertados por pantalla
echo "<tr><td>$cont</td><td bgcolor=\"$color\">$salida[0]</td><td bgcolor=\"$color\">$salida[1]</td><td bgcolor=\"$color\">$salida[2]</td><td bgcolor=\"$color\">$salida[3]</td></tr>";
}
echo "</table><br>";
//Cerramos el archivo
fclose($fitxer);
bueno, puedes intentar ajustarlo a tus necesidades, eso si, antes crea la tabla en la base de datos manualmente.