sql >> Database >  >> RDS >> PostgreSQL

COPY commando:kopieer alleen specifieke kolommen uit csv

Ofwel het CSV-bestand vooraf verwerken, of (wat ik waarschijnlijk zou doen) importeren in een tijdelijke kopie van de doeltabel en INSERT alleen geselecteerde kolommen in een tweede stap:

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

Een tijdelijke tafel wordt automatisch verwijderd aan het einde van de sessie. Als de verwerking langer duurt, gebruik dan een gewone tafel.



  1. Hoe Odoo 12 te clusteren met PostgreSQL-streamingreplicatie voor hoge beschikbaarheid

  2. Hoe kan ik een gemiddelde maken van datums in MySQL?

  3. sql-query om city pune te vervangen door mumbai en mumbai om pune in de tabel te vervangen

  4. Query om de som van de afstand (lengtegraad, breedtegraad) in opeenvolgende rijen in Mysql . te berekenen