PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Comando COPY:copie apenas colunas específicas do csv


Pré-processe o arquivo CSV ou (o que eu provavelmente faria) importe para uma cópia temporária da tabela de destino e INSERT apenas colunas selecionadas em uma segunda etapa:
CREATE TEMP TABLE tmp AS SELECT * FROM target_table LIMIT 0;
ALTER TABLE tmp ADD COLUMN etra_column1 text
             ,  ADD COLUMN etra_column2 text;  -- add excess columns
COPY tmp FROM '/path/tp/file.csv';

INSERT INTO target_table (col1, col2, col3)
SELECT col1, col2, col3 FROM tmp  -- only reelvant columns
WHERE  ...  -- optional, to also filter rows

Uma tabela temporária é descartada automaticamente no final da sessão. Se o processamento demorar mais, use uma tabela normal.