Postgresql

使用現有數據將欄位值設置為 PostgreSQL 表中新導入的行

  • April 3, 2013

我有一個包含現有數據的 PostgreSQL 表,需要將 CSV 文件中的所有行導入到該表中。我正在使用 pgadmin3 的導入工具進行導入。

在此處輸入圖像描述

**問題:**對於新導入的行,如何設置特定列的值(CSV 中沒有)?UPDATE staging.tablename SET colname = 'somename'導入空表時,我無法做到這一點。或者這種方法是錯誤的?

我建議使用COPY來自psql. 您可以DEFAULT為列設置一個值並從COPY命令中省略該值,例如:

\copy tablename(col1,col2,col3) FROM 'thefile.csv' WITH (FORMAT CSV)

或者,您可以TEMPORARY在 PgAdmin-III 中僅使用 CSV 中的列創建一個新表,將 CSV 導入其中,然後使用這樣的 SQL 將其合併到主表中:

INSERT INTO realtable (col1, col2, col3, colwithdefault)
SELECT
   col1, col2, col, 'some default value'
FROM tempcsvtable;

您可以使用它來基於表達式計算列、合併和拆分列、省略某些行等。

引用自:https://dba.stackexchange.com/questions/39109