Obtenir le nombre de lignes d'une commande COPY

count plpgsql postgresql sqlbulkcopy

Question

Lors de la copie de données depuis un fichier, vous obtenez le nombre de lignes dans psql avec la "balise de commande":

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

J'ai besoin du nombre de lignes et je voudrais éviter un count() redondant count() sur la table.

Est-il possible d’obtenir ce nombre directement de COPY dans une fonction PL / pgSQL?
Autant que je sache, il n'y en a pas, mais peut-être me manque-t-il quelque chose?

Pour PostgreSQL 9.2. Mais n'importe quelle option dans n'importe quelle version serait intéressante.

Réponse acceptée

Pas dans PG 9.2, mais dans PG 9.3 avec l'aimable autorisation de Pavel (E 1.3.1.7):

Autoriser PL / pgSQL à accéder au nombre de lignes traitées par COPY (Pavel Stehule)

La commande est GET DIAGNOSTICS x = ROW_COUNT.

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi