Изявление COPY във функция Pl/Pgsql:
СЪЗДАДЕТЕ ИЛИ ЗАМЕНЕТЕ ФУНКЦИЯ public.copy_data(fname text) ВРЪЩА цяло число
КАКТО
$$
declare
copy_qry текст;
cnt цяло число;
Започнете
copy_qry :='копирайте t от'||quote_literal(fname)||' с CSV HEADER;';
Изпълнете copy_qry;
ВЗЕМЕТЕ ДИАГНОСТИКА cnt =ROW_COUNT;
връщане cnt;
end;
$$ Език plpgsql;
предварително>Предишна версия:
-bash-4.1$ psql
psql.bin (9.2.3)
Въведете "help" за помощ.
postgres=# изберете copy_data('/usr/ local/pg93beta/t_load.csv');
copy_data
----------
0
(1 ред)В PostgreSQL 9.3
-bash-4.1$ ./psql -p 5555
psql (9.3beta1)
Въведете "help" за помощ.
postgres=# изберете copy_data('/ usr/local/pg93beta/t_load.csv');
copy_data
-----------
3
(1 ред)
или
-bash-4.1$ ./psql -p 5555 -c "изберете copy_data('/usr/local/pg93beta/t_load.csv');"
copy_data
----- ------
3
(1 ред)Благодарение на автора, изглежда просто, но много ефективно, когато работите със зареждане на данните с помощта на скриптове и искате да знаете броя на редовете, обработени от оператора COPY.