2017-02-15 10 views
0

FIRSTNAME LASTNAMEという列のテーブルがあり、その2つの列をFIRSTNAME_LASTNAMEに結合する3番目の列を作成したいが、ALSOは特殊辞書を使用して名前の一部を変換する。 :Postgres - 辞書を使用して列名を変換しますか?

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

だから「アルバート・ジョーンズ」の行の新しい列は「Funnyguy_Jones」だろう例えば、私はちょうどFIRSTNAMEにそれを適用したいと言います。

現在、私はpsycopg2で、すべての行(dbが巨大であるためバッチで)を読み込み、python辞書を使って変換して新しい列を作成し、UPDATE table SET newcol = tmp.newcol FROM (VALUES ...)などで更新を送信します。これは非常にですそれはPythonに読んでゆっくりとしています。任意のヒント?

EDIT:名前のすべてのleft joinが一致している場合

+0

特別辞書もテーブルですか? –

+0

@JuanCarlosOropezaそれが簡単な場合は、私は1つとして設定することができます。列としてFIRSTNAME NEWNAMEと言ってください。 – cgreen

答えて

1

COALESCEt2.newNameを選択します(それらの10%が、私は元の名前を維持したい人のため行うだけのように)変換持っていない、他のは賢明なあなたは意志選択する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 
+0

私はそれを理解しました - あなたの助けをありがとう! – cgreen

関連する問題