Как вы планируете брать информацию о типах? Ограничения на длину строк, например. Nullable поля, значения по умолчанию?
Если xml содержит подобную информацию в отдельном блоке (назовем его "заголовочным"), все относительно просто. Парсим заголовок, формируем запрос на наличие БД\таблицы, если нет - создаем, если есть - сравниваем структуры. Потом парсим записи, сооружая банальный Insert. Можно учитывать наличие файлов с такими ключами, тогда сооружаем конструкцию if exists then insert else update.
Возможно, подойдет что-то вроде CodeFirst у EF. Как минимум извращенский способ должен быть.