Вы должны сделать это из нескольких частей.
Загрузить таблицы Excel в промежуточную таблицу, скажем staging
.
Затем убедитесь, что ссылки на внешние ключи работают, для экземпляр:
select s.countrycode, count(*)
from staging s left join
countries c
on s.countrycode = c.countrycode
where c.countrycode is null
group by s.countrycode;
Вы должны повторить это для cities
и contacts
. Последнее может быть более сложным. Этот вопрос не спрашивает, что делать с конфликтующей информацией - если вам нужна помощь в этом, задайте НОВЫЙ вопрос.
Когда вы убедитесь, что все справочные таблицы верны, вы можете загрузить таблицу с помощью join
с:
insert into basicdata (Name, Father, Country_ID, City_ID ContactDetails_ID)
select s.name, s.father, co.country_id, ci.city_id,
con.contact_id
from staging s join
counties co
on s.countrycode = co.countrycode join
cities ci
on s.citycode = ci.citycode join
contacts con
on s.contacctno = con.contactno;