Предполагая, что пользователи будут отправлять подмножество возможных типов данных, которые вы определили заранее, это не должно быть слишком жестким.
Простая форма, которая позволяет пользователю выбрать тип данных и дать вам имя поля в их CSV, может быть использована для создания шаблонов, которые вы упомянули. Сохраните их в таблице базы данных, связанной с пользователем, и заставьте их выбрать шаблон перед импортом в CSV. Для клиентов, у которых есть csvs без строк заголовка, небольшая разница, когда они сообщают номера столбцов для каждого типа данных.
Я бы также предложил предоставить заранее определенные форматы для клиентов, которые еще не определили свой экспорт. Таким образом, они могут построить свой экспорт в один из ваших форматов.
Вы также можете разрешить пользователям определять свой шаблон по умолчанию. Таким образом, им не придется выбирать шаблон каждый раз, когда они импортируют данные, если они всегда импортируют данные в одном и том же формате.