#database #plsql
#База данных #plsql
Вопрос:
Я хочу выполнить перенос данных из одной таблицы в другую таблицу. Исходная таблица содержит названия стран в свободном плавающем тексте, а таблица назначения должна иметь код страны.
Например, исходная таблица содержит названия стран с неправильным написанием.
например, Соединенные Штаты Америки ->
Франк США -> FRA
Можем ли мы иметь некоторую пару ключ-значение в SQL, где мы можем хранить эти неправильные названия стран в 3-символьном коде страны?
Комментарии:
1. Используете ли вы Oracle? Какая версия? Сколько разных значений в исходной таблице?
2. Кроме того, вы описываете это как «миграцию данных». Это одноразовое упражнение или непрерывный процесс? Вы ищете автоматизированное решение или что-то, что требует «навыков и суждений» для правильного перевода?
Ответ №1:
Тег PL / SQL читается как «Oracle». Если это так, посмотрите, поможет ли что-то подобное.
Примеры таблиц:
SQL> select * from state;
ABB NAME
--- ------------------------
FRA France
USA United States of America
GER Germany
SQL> select * from garbage;
NAME
----------------------
United Stts of Americ
Unted states of Amerca
Frnce
France
Gremany
SQL>
Запрос:
SQL> select g.name, s.name, s.abbr
2 from state s join garbage g
3 on utl_match.jaro_winkler_similarity(g.name, s.name) > 90;
NAME NAME ABB
---------------------- ------------------------ ---
Frnce France FRA
France France FRA
United Stts of Americ United States of America USA
Unted states of Amerca United States of America USA
Gremany Germany GER
SQL>
При необходимости измените значение сходства. Я использовал 90
, посмотрите, как он ведет себя для ваших данных.
Комментарии:
1. Помните, что реализация Oracle Jaro-Winkler чувствительна к регистру, поэтому
France
иFRANCE
не набирает 100 баллов. Кроме того, мы получаем ложные срабатывания при довольно высоких пороговых значениях. Например,Iraq
88 баллов противIran
(и наоборот, obvs).Ira
94 балла против обоихIran
иIraq
. Поэтому я думаю, что сопоставление сходства является хорошей отправной точкой, но я бы не стал полагаться на него как на комплексное решение. Конечно, это скорее зависит от того, что Искатель хочет сделать с данными.2. Спасибо за комментарий, @APC, я согласен со всем, что вы сказали.