Mírate la función SPLIT, te ahorrará mucho código.
De todas formas me gustan más los ficheros planos de longitud constante, o sea, que haya o no haya dato, siempre serán de la misma longitud. Por ejemplo:
Columnas: nombre10, edad3, año4, ciudad10
pepe 201982madrid ;
margarita 221988caracas ;
1012004roma ;
sin el punto y coma.
Si al recuperar un campo te da cadena vacía(como el tercero, pos 1-10), metes NULL a la bbdd y ya está.
Para mi es lo mejor.
Saludos
Pablo