В веб-приложении, с которым я сейчас работаю, есть логика импорта файлов. Логика
1> читает записи из файла [excel или txt],
2> показывает недоступную для редактирования сетку всех импортированных записей [Новые записи помечаются как Новые, если их нет в базе данных, а существующие записи помечаются как Обновление] и
3> сбрасывает записи в базу данных.
файл, содержащий в файле контакты следующего формата (зеркально отображает столбцы базы данных с первичными ключами First_Name, Last_Name
):
First_Name, Last_Name, AddressLine1, AddressLine2, City, State, Zipcode
Проблема, с которой мы сталкиваемся, заключается в том, что в файл вводятся разные значения для одной и той же сущности. Например, кто-то может напечатать NY для New York, а кто-то - в Нью-Йорке. То же самое относится к имени или фамилии ex. Джон Майерс и Джон Майер ссылаются на одного и того же человека, но поскольку запись не совпадает точно, она вставляет запись, а не использует ее для обновления.
Пример, для записи из файла ( Обратите внимание, что использование имени и адреса чисто случайно:) ):
John, Myers, 44 Chestnut Hill, Apt 5, Indiana, Indiana, 11111
и запись в базе данных:
John, Myer, 80 Washington St, Apt 1, Chicago, IL, 3333
система должна была обнаружить запись в файле как существующую запись [из-за фамилии Myers
и Myer
и так как имя полностью совпадает] и выполнить обновление адреса, а вместо этого вставить новую значение.
Как я могу подойти к этой проблеме, когда я хотел бы найти все записи, которые будут выполнять сопоставление существующих записей в базе данных?