PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

COPY-Befehl:Kopieren Sie nur bestimmte Spalten aus CSV

Entweder die CSV-Datei vorverarbeiten oder (was ich wahrscheinlich tun würde) in eine temporäre Kopie der Zieltabelle importieren und INSERT nur ausgewählte Spalten in einem zweiten Schritt:

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

Am Ende der Sitzung wird automatisch eine temporäre Tabelle gelöscht. Wenn die Verarbeitung länger dauert, verwenden Sie eine reguläre Tabelle.