postgres insertar from examples example ejemplo create postgresql header postgresql-copy

postgresql - insertar - Comando COPY: copia solo columnas específicas de csv



insertar csv en postgresql (1)

Tenía una pregunta sobre el comando COPY en PostgreSQL. Tengo un archivo CSV que solo quiero copiar algunos de los valores de las columnas en mi tabla PostgreSQL.

¿Es posible hacer esto? Estoy familiarizado con el uso del comando COPY para copiar todos los datos de un CSV en una tabla usando el encabezado para mapear los nombres de las columnas, pero ¿cómo es posible cuando solo deseo algunas de las columnas?


Preprocesar el archivo CSV o (lo que probablemente haría) importar en una copia temporal de la tabla de destino e INSERT solo las columnas seleccionadas en un segundo paso:

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

Una tabla temporal se descarta automáticamente al final de la sesión. Si el procesamiento lleva más tiempo, use una tabla común.