PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

GET DIAGNOSTICS avec l'instruction COPY dans la fonction Pl/pgsql

Maintenant, GET DIAGNOSTIC renverra le nombre de lignes traitées par l'instruction COPY dans une fonction Pl/Pgsql.
Instruction COPY dans la fonction Pl/Pgsql :

CREATE OR REPLACE FUNCTION public.copy_data(fname text) RETURNS integer
AS
$$
declare
copy_qry text;
cnt integer;
Begin
copy_qry :='copie t de'||quote_literal(fname)||' avec CSV HEADER;';
Exécutez copy_qry;
GET DIAGNOSTICS cnt =ROW_COUNT;
return cnt;
end;
$$ Language plpgsql;

Version précédente :

-bash-4.1$ psql
psql.bin (9.2.3)
Tapez "help" pour obtenir de l'aide.

postgres=# select copy_data('/usr/ local/pg93beta/t_load.csv');
copy_data
-----------
0
(1 ligne)

Dans PostgreSQL 9.3

-bash-4.1$ ./psql -p 5555
psql (9.3beta1)
Tapez "help" pour obtenir de l'aide.

postgres=# select copy_data('/ usr/local/pg93beta/t_load.csv');
copy_data
-----------
3
(1 ligne)
ou
-bash-4.1$ ./psql -p 5555 -c "select copy_data('/usr/local/pg93beta/t_load.csv');"
copy_data
----- ------
3
(1 rangée)

Grâce à l'auteur, cela semble simple mais très efficace lorsque vous travaillez avec le chargement des données à l'aide de scripts et que vous souhaitez connaître le nombre de lignes traitées par l'instruction COPY.