Ich würde das mit einer StringListe lösen (Hiermit kannst du auch das Aufspalten einer zeile in die Teilkomponenten erledigen.
Delphi-Quellcode:
var
sl: TStrings;
...
begin
while ... (Über alle Zeilen)
s := <Zeile lesen>
sl := TStringList.Create;
sl.Delimiter := '|';
sl.DelimitedText := s;
sl.Items[0] ->Tablename usw.