2011-09-02 19 views
1

將數據從csv加載到現有Postgres表後,我將有重複需要合併的記錄。要做到這一點,我打算使用一個存儲過程,執行以下操作:使用FOR內環PL/pgQSL - 在存儲過程中通過ROWTYPE枚舉

current_record airports%ROWTPE; 
    new_record airports%ROWTYPE 

    FOR current_record in SELECT * from airports ORDER BY iko LOOP 
     SELECT * into (STRICT) new_record from airports where iko=current_record.iko AND oid < current_record.oid 
     -- IS IT POSSIBLE TO enumerate over each field as follows? 
      FOR int i = 0; i < new_record.fields.count; i++ LOOP 
       IF new_record.field[i] IS NOT NULL THEN current_record.field[i] = 
       new_record.field[i] 
      END LOOP; 
    END LOOP; 

我可以枚舉域如上圖所示,或將我硬編碼我的變化邏輯在各個領域表?大約有70列。

如何做到這一點的其他更好的方法也會有所幫助。

TIA。

回答

1

對此沒有直接的支持。但是,您可以從您的功能中查詢系統目錄。但這不會讓事情變得更快。

下面是如何在觸發器中執行此操作的示例。這可能會讓你開始朝正確的方向發展。

http://wiki.postgresql.org/wiki/PL/pgSQL_Dynamic_Triggers

+0

看起來是一個很好的開始。謝謝。 –