PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

GET DIAGNOSTICS mit der COPY-Anweisung in der Pl/pgsql-Funktion

Jetzt gibt GET DIAGNOSTIC die Anzahl der Zeilen zurück, die von der COPY-Anweisung in einer Pl/Pgsql-Funktion verarbeitet wurden.
COPY-Anweisung in einer Pl/Pgsql-Funktion:

CREATE OR REPLACE FUNCTION public.copy_data(fname text) RETURNS integer
AS
$$
declare
copy_qry text;
cnt integer;
Begin
copy_qry := 'copy t from'||quote_literal(fname)||' with CSV HEADER;';
Execute copy_qry;
GET DIAGNOSTICS cnt = ROW_COUNT;
return cnt;
end;
$$ Language plpgsql;

Vorherige Version:

-bash-4.1$ psql
psql.bin (9.2.3)
Type "help" for help.

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

In PostgreSQL 9.3

-bash-4.1$ ./psql -p 5555
psql (9.3beta1)
Type "help" for help.

postgres=# select copy_data('/usr/local/pg93beta/t_load.csv');
copy_data
-----------
3
(1 row)
or
-bash-4.1$ ./psql -p 5555 -c "select copy_data('/usr/local/pg93beta/t_load.csv');"
copy_data
-----------
3
(1 row)

Dank des Autors sieht es einfach, aber sehr effektiv aus, wenn Sie mit dem Laden der Daten mithilfe von Skripten arbeiten und die Anzahl der Zeilen wissen möchten, die von der COPY-Anweisung verarbeitet werden.