Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
¿Es posible insertar y reemplazar filas con pgloader?

Mi caso de uso es el siguiente: tengo datos provenientes de un archivo csv y necesito cargarlos en una tabla (hasta ahora todo bien, nada nuevo aquí). Puede suceder que los mismos datos se envíen con columnas actualizadas, en cuyo caso me gustaría intentar insertar y reemplazar en caso de duplicación.

Entonces mi tabla es la siguiente:

 CREATE TABLE codes ( code TEXT NOT NULL, position_x INT, position_y INT PRIMARY KEY (code) );

Y el archivo csv entrante es así:

 TEST01,1,1 TEST02,1,2 TEST0131,3 TEST04,1,4

Puede suceder que en algún momento en el futuro obtenga otro archivo csv con:

 TEST01,1,1000 <<<<< updated value TEST05,1,5 TEST0631,6 TEST07,1,7

En este momento, lo que sucede es que cuando ejecuto el primer archivo, todo está bien, pero cuando ejecuto el segundo, aparece un error:

 2017-04-26T10:33:51.306000+01:00 ERROR Database error 23505: duplicate key value violates unique constraint "codes_pkey" DETAIL: Key (code)=(TEST01) already exists.

Cargo datos usando:

 pgloader csv.load

Y mi archivo csv.load se ve así:

 LOAD CSV FROM 'codes.csv' (code, position_x, position_y) INTO postgresql://localhost:5432/codes?tablename=codes (code, position_x, position_y) WITH fields optionally enclosed by '"', fields terminated by ',';

¿Es posible lo que estoy tratando de hacer con pgloader?

También intenté eliminar restricciones para la clave principal, pero luego terminé con entradas duplicadas en la tabla.

Muchas gracias por tu ayuda.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No, no puedes. Según referencia

Para evitar eso (excepciones de carga, por ejemplo, violaciones de PK) , pgloader corta los datos en lotes de 25000 filas cada uno, de modo que cuando ocurre un problema, solo afecta a esa cantidad de filas de datos.

entre paréntesis - el mío...

Lo mejor que puede hacer es cargar csv en la tabla con la misma estructura y luego fusionar los datos con la ayuda de la consulta ( EXCEPT , OUTER JOIN ... where null , etc.)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda