Más

Importación de postgres ogr2ogr: compruebe si existe el conjunto de datos

Importación de postgres ogr2ogr: compruebe si existe el conjunto de datos


Tengo una base de datos PostGIS que actualizo diariamente con ogr2ogr usando archivos CSV. Esto funciona muy bien.

¿Hay alguna manera de verificar si el valor real de una columna ya existe en la tabla (por ejemplo, "event_id" = abc123 (sin clave principal)) y, de ser así, que no agregará el conjunto de datos a la tabla? Los otros conjuntos de datos que no están en la tabla deben adjuntarse a la tabla.

Esta es mi línea de comandos real:

ogr2ogr -f "PostgreSQL" -append PG: "host = localhost user = user password = pw dbname = test" data.vrt -nln table_name

Lo que está buscando es esencialmente una actualización (aunque sin la parte de actualización). Esto no es parte de ogr2ogr y es bastante complicado de implementar en Postgres, consulte los documentos para obtener más información de la que querría saber sobre las actualizaciones.

Una alternativa simple sería usar una tabla temporal para insertar desde ogr2ogr y luego ejecutar una inserción solo para aquellas filas donde no hay event_id, usando una combinación izquierda o una cláusula no existe.

INSERT INTO some_table SELECT t. * FROM some_table t LEFT JOIN temp_table tmp ON t.event_id = tmp.event_id DONDE tmp.event_id ES nulo;