Respondi a uma pergunta praticamente idêntica outro dia: Salve arquivos CSV no banco de dados mysql
MySQL tem um recurso
LOAD DATA INFILE
, que permite importar um arquivo CSV diretamente em uma única consulta SQL, sem a necessidade de processá-lo em um loop por meio do seu programa PHP. Exemplo simples:
<?php
$query = <<<eof
LOAD DATA INFILE '$fileName'
INTO TABLE tableName
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field1,field2,field3,etc)
eof;
$db->query($query);
?>
É simples assim.
Sem loops, sem barulho. E muito muito mais rápido do que analisá-lo em PHP.
Página do manual do MySQL aqui:http://dev.mysql. com/doc/refman/5.1/en/load-data.html
espero que ajude