Puede echar un vistazo a CARGAR ARCHIVO DE DATOS en MySQL.
Es posible que pueda realizar las manipulaciones una vez que los datos se carguen en MySQL, en lugar de leerlos primero en PHP. Primero almacene los datos sin procesar en una tabla temporal usando LOAD DATA INFILE, luego transforme los datos a la tabla de destino usando una declaración como la siguiente:
INSERT INTO targettable (x, y, z)
SELECT foo(x), bar(y), z
FROM temptable