I know nothing about Teradata, but I assume it has a tool like Oracle SQLLoader capable to load a table from a flat csv or fixed width file.
So, to what purpose would you like to capture values in shell variables?
Anyway, to capture lines composed of 3 fields, the basic loop should be as the following:
myfile=$1
IFS='|' while read -r f1 f2 f3
do
print "Do whatever you want with $f1, $f2, $f3"
done < $myfile
Of course if the field values are quoted when they contain the "|" character meaning itself, then the problem becomes much worse.