sql >> Databasteknik >  >> RDS >> PostgreSQL

FÅ DIAGNOSTIK med COPY-sats i Pl/pgsql-funktionen

Nu kommer GET DIAGNOSTIC att returnera antalet rader som behandlas av COPY-satsen i en Pl/Pgsql-funktion.
COPY-satsen i Pl/Pgsql-funktionen:

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;

Föregående 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)

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)

Tack vare författaren ser det enkelt ut men väldigt effektivt när man arbetar med att ladda data med skript och vill veta antalet rader som behandlas av COPY-satsen.


  1. Är det möjligt att ange parametrar för tabell- eller kolumnnamn i Prepared Statements eller QueryRunner.update()?

  2. EFTER LOGON(Oracle) trigger i PostgreSQL med tillägg – login_hook

  3. Ogiltigt standardvärde för "dateAdded"

  4. Ingen Entity Framework-leverantör hittades för 'MySql.Data.MySqlClient' ADO.NET-leverantör