私はこの種のデータのクリーンアップを何度も行ってきましたが、残念ながら、独自の修正を作成するよりも簡単なことは知りません。
私がお勧めできることの 1 つは、プロセスを繰り返し可能にすることです。(rulenum、pattern、new_value) のような置換テーブルを用意します。次に、テーブルの関連部分のコピーを作成して、スクリプト全体を再実行できるようにします。
次に、明白な一致から始めて (もっともらしく見えるものだけを見てください)、よりあいまいな一致に移ることができます。最終的には一致しないものが 50 個あり、手動でエントリにパッチを適用するだけで済みます。
最初の数回の試行でミスマッチを見つけることになるため、反復可能にすることが重要です。
したがって、次のようなものです(構文はテストされていません):
CREATE TABLE matches (rule_num int PRIMARY KEY, pattern text, new_value text)
CREATE TABLE cityfix AS
SELECT id, city AS old_city, '' AS new_city, 0 AS match_num FROM locations;
UPDATE c SET c.new_city = m.new_value, c.match_num = m.rule_num
FROM cityfix AS c JOIN matches m ON c.old_city LIKE m.pattern
WHERE c.match_num = 0;
-- Review results, add new patterns to rule_num, repeat UPDATE
-- If you need to you can drop table cityfix and repeat it.