Re: gexec from command prompt?

2023-01-12 Thread David G. Johnston
On Thu, Jan 12, 2023 at 10:34 AM Pavel Stehule 
wrote:

>
> čt 12. 1. 2023 v 18:25 odesílatel Ron  napsal:
>
>>
>> Removing "\\exec" from the statement, and appending -c "\\gexec" to the
>> psql
>> command technically worked, but did not run the commands.
>>
>
> I don't know why, but \g* commands don't work from the -c option. But in
> this case it is not necessary
>
>
Well, the -c option states:

command must be either a command string that is completely parsable by the
server (i.e., it contains no psql-specific features), or a single backslash
command. Thus you cannot mix SQL and psql meta-commands within a -c option.

Thus any meta-command that interacts with server-parsed SQL is rendered
useless in -c

David J.


Re: gexec from command prompt?

2023-01-12 Thread Alvaro Herrera
On 2023-Jan-12, Ron wrote:

> Postgresql 12.11
> 
> This might be more of a bash question, or it might be a psql vs engine 
> problem.
> 
> I want to run this query using psql from a bash prompt:
> select format('SELECT ''%s'', MIN(part_date) FROM %s;', table_name, 
> table_name)
> from dba.table_structure
> order by table_name\gexec

Yeah, what I use in these cases is something like

echo "select format('SELECT ''%s'', MIN(part_date) FROM %s;', table_name, 
table_name)
from dba.table_structure
order by table_name \gexec" | psql -f-


-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"El hombre nunca sabe de lo que es capaz hasta que lo intenta" (C. Dickens)




Re: gexec from command prompt?

2023-01-12 Thread Pavel Stehule
čt 12. 1. 2023 v 18:25 odesílatel Ron  napsal:

> Postgresql 12.11
>
> This might be more of a bash question, or it might be a psql vs engine
> problem.
>
> I want to run this query using psql from a bash prompt:
> select format('SELECT ''%s'', MIN(part_date) FROM %s;', table_name,
> table_name)
> from dba.table_structure
> order by table_name\gexec
>
> Thus, I added an extra back
>
> $ psql sides -atXc "select format('SELECT ''%s'', MIN(part_date) FROM
> %s;',
> table_name, table_name) from dba.table_structure order by table_name limit
> 5\\gexec"
> select format('SELECT ''%s'', MIN(part_date) FROM %s;', table_name,
> table_name) from dba.table_structure order by table_name limit 5\gexec
> ERROR:  syntax error at or near "\"
> LINE 1: ...) from dba.table_structure order by table_name limit 5\gexec
>
> Removing "\\exec" from the statement, and appending -c "\\gexec" to the
> psql
> command technically worked, but did not run the commands.
>

I don't know why, but \g* commands don't work from the -c option. But in
this case it is not necessary

you can psql -c "xxx" | psql

Regards

Pavel


>
> --
> Born in Arizona, moved to Babylonia.
>
>
>