PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

GET DIAGNOSTICS com instrução COPY na função Pl/pgsql

Agora GET DIAGNOSTIC retornará o número de linhas processadas pela instrução COPY em uma função Pl/Pgsql.
Instrução COPY em Pl/Pgsql Função:
CRIAR OU SUBSTITUIR FUNÇÃO 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;

Versão anterior:
-bash-4.1$ psql
psql.bin (9.2.3)
Digite "help" para ajuda.

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

No PostgreSQL 9.3
-bash-4.1$ ./psql -p 5555
psql (9.3beta1)
Digite "help" para obter ajuda.

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

Graças ao autor, parece simples, mas muito eficaz ao trabalhar com o carregamento de dados usando scripts e deseja saber o número de linhas processadas pela instrução COPY.