Контекст и подробности проблемы
Основные проблемы, с которыми мы сталкиваемся при работе с данными:
- Поля имен ()[/b]:
Код: Выделить всё
firstname/lastname
Смешанный текст на китайском и английском языках в одном поле. - Нестандартные нелокальные имена (например, «Танака Юки» вместо «Юки Танака» для японских имен; несовместимое форматирование для имен на латинице, таких как «T??n Mahir Md A???F»).
- Встроенные заголовки («Г-н/Миссис/Миссис»), специальные символы (скобки, кавычки) и искажения кодировки (например, «é™³å®¶æ‚ ???»).
- Предпочитаемые имена смешиваются с именем/(нет выделенного поля), что приводит к избыточности.
Код: Выделить всё
lastname
Соответствующая структура таблицы (упрощенная)
Таблица user содержит следующие ключевые поля (остальные опущены):
Код: Выделить всё
CREATE TABLE `user` (
`id` bigint(10) NOT NULL AUTO_INCREMENT,
`username` varchar(100) NOT NULL DEFAULT '', -- Has emojis/non-standard values
`firstname` varchar(100) NOT NULL DEFAULT '', -- Mixed names, titles, etc.
`lastname` varchar(100) NOT NULL DEFAULT '', -- Same issues as firstname
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Нам необходимо извлечь и обработать эти данные, чтобы создать стандартизированное поле полного имени с правилами:
- Нет предпочтительного имени: имя + фамилия или фамилия + имя (порядок зависит от языка: например, китайский = "Последний+первый", английский = «Первый+Последний»).
- С предпочтительным именем: добавьте извлеченное предпочтительное имя к приведенному выше (например, «Последний+Первый (Предпочитаемый)» или подобное).
- Автоматизированный и постоянный: обработка новых данных по мере их импорта (а не однократно). fix).
- Неразрушающий: оставьте исходную базу данных нетронутой — обработайте извлеченные копии.
- Обрабатывает крайние случаи: очищает специальные символы/смайлики, исправляет кодировку, стандартизирует многоязычный порядок имен и извлекает предпочтительные имена из имени/.
Код: Выделить всё
lastname
Я исследовал регулярное выражение для очистки специальных символов, но застрял на следующем:
- Эффективном анализе многоязычных имен.
- Надежное извлечение предпочтительных имен (часто встроенных в виде дубликатов или в скобках, но шаблоны не согласовано).
- Автоматизация конвейера для запуска при импорте новых данных.
- Удаление идентификатора класса и идентификатора студента, которые могут существовать в полях имени и фамилии или объединяться с именем/фамилией на основе нашего текущего наблюдения. И ClassID+StudnetID имеют несовместимый формат из разных школ, например 1A01, 1As11111, 1A 01 (2025–2026).
Подробнее здесь: https://stackoverflow.com/questions/798 ... ername-dat
Мобильная версия