Глядя на bulk insert во временную таблицу я немного взгрустнул)))
Рекомендую посмотреть на "инверсный" вариант:
select
or.* -- или явный перечень того что надо с нужными трансформациями типа ltrim(rtrim()), cast() итп
from openrowset (
BULK 'E:\MS-SQL\Exam\Data\Countries.txt',
FORMATFILE = 'E:\MS-SQL\Exam\Data\Countries.xml'
) as or
-- а тут можно нужные join, where, group итп.
Придется чутка подразобраться со структурой форматфайла, но это принесет неоценимую пользу в плане более тщательного указания что за данные должны быть, перекодировок и т.п. По сути получится карманный вариант import-export wizard