01 / Ситуация
Импорт удвоил базу
Файл готовили для обновления: те же клиенты, новые телефоны и адреса. Импорт завершился успешно, ошибок не показал.
Через день менеджеры заметили, что у половины клиентов по две карточки: старая с историей и новая с обновлёнными данными. История разошлась по двум записям.
02 / Причина
Почему импорт плодит записи
По умолчанию импорт создаёт
Если в настройках не сказано искать существующую запись, каждая строка файла становится новой карточкой.
Ключ сопоставления не задан
Импорт не знает, по какому полю узнавать клиента: по телефону, почте, названию компании или внешнему коду.
Импорт обновляет, а не создаёт, когда заранее задан ключ: одно поле, по которому запись однозначно находится, и правило, что делать при совпадении.
03 / Подход
Сопоставление по ключу
Выбрать ключ
Поле, которое есть и в файле, и в базе и не меняется: телефон в одном формате, почта или внешний код из учётной системы.
Задать правило совпадения
Нашли запись — обновляем поля. Не нашли — создаём новую. Это настройка импорта, а не пожелание.
Проверить на десятке строк
Небольшая партия, проверка карточек вручную. Только потом весь файл — иначе дубли придётся разбирать вручную.
04 / Нюансы
Что учесть
Телефон в разных форматах
С плюсом, без плюса, с восьмёркой и без — для импорта это разные значения. Формат приводится до загрузки.
Уже созданные дубли
Импорт их не уберёт. Нужно отдельное слияние: какая карточка остаётся, куда переносится история и переписка.
Пустое поле затирает старое
Если в файле ячейка пустая, при обновлении она может обнулить данные в карточке. Это отдельная настройка.
05 / Первый шаг
Десять строк и два правила
Возьмём десять строк файла и прогоним их на копии данных: посмотрим, что происходит при совпадении и при отсутствии клиента.
- По какому полю отличаете клиента в базе.
- Что важнее при совпадении: обновить или сохранить существующее.
- Сколько дублей уже накопилось и какие из них точно лишние.
По итогу согласуем ключ, правило импорта и порядок разбора существующих дублей.