Thread
-
How to pass arguments in postgres to sql scripts.
kunwar singh <krishsingh.111@gmail.com> — 2024-04-27T13:03:16Z
Hi friends, Question: How to pass arguments in postgres to sql scripts. Context. When I am monitoring my production Oracle databases I have a lot of simple sql scripts (which require one or more arguments) which make my monitoring/troubleshooting life simpler. How can I achieve the same in postgres? We are migrating our Oracle databases to Postgres and I am modifying my scripts to do the same in Postgres. Oracle ====== cat appjobcheck.sql SELECT SID, SYS_CONTEXT.GET_CURRENT_SCHEMA() AS "SCHEMA", -- Similar to datname USERNAME, PROGRAM AS "APPLICATION_NAME", STATUS, SQL_ID, -- Use V$SQL to get full query text based on SQL_ID LOGON_TIME AS "BACKEND_START", SQL_EXEC_START AS "QUERY_START", FROM V$SESSION WHERE STATUS = 'ACTIVE' -- Filter to active sessions AND TYPE != 'BACKGROUND'; -- Exclude background processes AND program='&1'; The way to invoke from sqlplus is . SQL> @appjobcheck batchprocessapp1 ---- batchprocessapp1 is what I want to monitor Postgres ========== cat appjobcheck.sql SELECT pid, datname, usename, application_name, state, query, backend_start, query_start FROM pg_stat_activity where application_name='&1'; The way I am trying invoke from postgres is . postgres=> \i appjobcheck.sql batchprocessapp1 ---- batchprocessapp1 is what I want to monitor pid | datname | usename | application_name | state | query | backend_start | query_start -----+---------+---------+------------------+-------+-------+---------------+------------- (0 rows) \i: extra argument "batchprocessapp1" ignored -- Cheers, Kunwar -
Re: How to pass arguments in postgres to sql scripts.
Samed YILDIRIM <samed@reddoc.net> — 2024-04-27T13:13:50Z
Hi Kunwar, You can check -v option of psql, 4th paragraph and \set command in "Meta-Commads" section, and "Variables" subsection under "Advanced Features". https://www.postgresql.org/docs/16/app-psql.html https://www.postgresql.org/docs/16/app-psql.html#APP-PSQL-VARIABLES Best regards. Samed YILDIRIM On Sat, 27 Apr 2024, 16:03 kunwar singh, <krishsingh.111@gmail.com> wrote: > Hi friends, Question: How to pass arguments in postgres to sql scripts. > Context. When I am monitoring my production Oracle databases I have a lot > of simple sql scripts (which require one or more arguments) which make my > monitoring/troubleshooting life simpler. How can I achieve the same in > postgres? We are migrating our Oracle databases to Postgres and I am > modifying my scripts to do the same in Postgres. > > Oracle > ====== > cat appjobcheck.sql > > SELECT > SID, > SYS_CONTEXT.GET_CURRENT_SCHEMA() AS "SCHEMA", -- Similar to datname > USERNAME, > PROGRAM AS "APPLICATION_NAME", > STATUS, > SQL_ID, -- Use V$SQL to get full query text based on SQL_ID > LOGON_TIME AS "BACKEND_START", > SQL_EXEC_START AS "QUERY_START", > FROM > V$SESSION > WHERE > STATUS = 'ACTIVE' -- Filter to active sessions > AND TYPE != 'BACKGROUND'; -- Exclude background processes > AND program='&1'; > > The way to invoke from sqlplus is . > > SQL> @appjobcheck batchprocessapp1 ---- batchprocessapp1 is what I want > to monitor > > > Postgres > ========== > cat appjobcheck.sql > > SELECT > pid, > datname, > usename, > application_name, > state, > query, > backend_start, > query_start > FROM pg_stat_activity where application_name='&1'; > > The way I am trying invoke from postgres is . > > > postgres=> \i appjobcheck.sql batchprocessapp1 ---- batchprocessapp1 is > what I want to monitor > pid | datname | usename | application_name | state | query | > backend_start | query_start > > -----+---------+---------+------------------+-------+-------+---------------+------------- > (0 rows) > > \i: extra argument "batchprocessapp1" ignored > > -- > Cheers, > Kunwar >
-
Re: How to pass arguments in postgres to sql scripts.
Feike Steenbergen <feikesteenbergen@gmail.com> — 2024-05-03T16:43:42Z
On Sat, 27 Apr 2024 at 15:03, kunwar singh <krishsingh.111@gmail.com> wrote: > > Hi friends, Question: How to pass arguments in postgres to sql scripts. Context. When I am monitoring my production Oracle databases I have a lot of simple sql scripts (which require one or more arguments) which make my monitoring/troubleshooting life simpler. How can I achieve the same in postgres? We are migrating our Oracle databases to Postgres and I am modifying my scripts to do the same in Postgres. One way to do it is with --set $ psql --set var1=postgres -AtXq postgres=# select pid from pg_stat_activity where usename=:'var1'; 185 1939 Kind regards, Feike Steenbergen