Postgresql
使用現有數據將欄位值設置為 PostgreSQL 表中新導入的行
我有一個包含現有數據的 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;
您可以使用它來基於表達式計算列、合併和拆分列、省略某些行等。