sql >> Database teknologi >  >> RDS >> PostgreSQL

FÅ DIAGNOSTIK med COPY-sætning i Pl/pgsql-funktionen

Nu vil GET DIAGNOSTIC returnere antallet af rækker behandlet af COPY-sætning i en Pl/Pgsql-funktion.
COPY-sætning i 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;

Tidligere udgivelse:

-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)

I 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)

Takket være forfatteren ser det enkelt ud, men meget effektivt, når man arbejder med at indlæse data ved hjælp af scripts og ønsker at vide antallet af rækker, der behandles af COPY-sætningen.


  1. Sådan fungerer FROM_BASE64()-funktionen i MySQL

  2. SQL rekursiv forespørgsel på selvreferencetabel (Oracle)

  3. GroupingError:ERROR:kolonnen skal vises i GROUP BY-sætningen eller bruges i en aggregeret funktion

  4. Hvordan Cosh() virker i PostgreSQL