Postgres - 使用字典转换列名?

Postgres - use a dictionary to convert column names?

我有一个 table 列 FIRSTNAME LASTNAME 并且我想创建第三列将这两列组合成 FIRSTNAME_LASTNAME 但也使用特殊字典来转换一些名称。假设我只想将它应用到 FIRSTNAME,例如:

Albert -> Funnyguy, Kathleen -> Nerd, Megan -> Weirdo

因此 "Albert Jones" 行的新列将是 "Funnyguy_Jones"。

目前,我在 psycopg2 中通过读取所有行(分批读取,因为数据库很大),使用 python 字典转换和创建新列,然后使用 UPDATE table SET newcol = tmp.newcol FROM (VALUES ...) 等。这很慢,因为将它读入 python。有什么建议吗?

编辑:并非所有名称都有转换(只有 10% 的名称有转换,对于那些我想保留原始名称的名称)

如果left join匹配COALESCE会选择t2.newName,否则你会选择t1.firstName

SELECT t1.firstName,
       t1.lastName,
       COALESCE(t2.newName, t1.firstName) + '_' + t1.lastName as combinedName
FROM firstTable t1
LEFT JOIN newTable t2
       ON t1.firstName = t2.firstName