Ottieni il conteggio delle righe da un comando COPY

count plpgsql postgresql sqlbulkcopy

Domanda

Quando copi i dati da un file, ottieni il conteggio delle righe in psql con il "tag comando":

db=# COPY t FROM '/var/lib/postgres/test.sql';
COPY 10

Ho bisogno del numero di righe e vorrei evitare un count() ridondante count() sul tavolo.

C'è un modo per ottenere questo numero da COPY direttamente in una funzione PL / pgSQL?
Per quanto ne so non c'è nessuno, ma forse mi manca qualcosa?

Per PostgreSQL 9.2. Ma qualsiasi opzione in qualsiasi versione sarebbe di interesse.

Risposta accettata

Non in PG 9.2, ma c'è in PG 9.3 per gentile concessione di Pavel (E 1.3.1.7):

Permetti a PL / pgSQL di accedere al numero di righe elaborate da COPY (Pavel Stehule)

Il comando è GET DIAGNOSTICS x = ROW_COUNT.

http://www.postgresql.org/docs/devel/static/release-9-3.html



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow