powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как передать переменную в psql ?
13 сообщений из 13, страница 1 из 1
Как передать переменную в psql ?
    #39785240
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть скрипт, в нем есть переменная

Код: sql
1.
2.
3.
4.
5.
6.
DO
$$
DECLARE
        ip_server text='192.168.0.1';

...



Подскажите пожалуйста, как можно передать эту переменную при запуске psql ?
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785244
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. надо как-то сделать чтобы при вызове psql в скрипт можно было бы прописать переменную при вызове.
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785245
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое вообще в принципе возможно?
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785251
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такое требуется:

Код: sql
1.
psql -U user -d postgres -f /home/my.sql       <---как-то сюда в пихнуть переменную на этом шаге
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785261
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть какие-нибудь варианты?
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785277
Osmolovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделать скрипт в функцию с параметром
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785322
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызывай psql с параметром:
Код: sql
1.
psql --set="ip_addr='192.167'" -U юзер -d база


И используй переменную в скрипте:
Код: sql
1.
SELECT :ip_addr;
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785400
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39785402
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: powershell
1.
~$ echo  "SELECT :myparam;"|psql --set="myparam='Helo,World'" -U user -d postgres 
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39789019
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Спасибо за помощь.



Вот так получается:


Код: sql
1.
echo  "SELECT :myparam;"|psql --set="myparam='Helo,World'" -U postgres -d postgres 





А вот так не получается:

Код: sql
1.
2.
3.
4.
psql --set="myparam='Helo,World'" -U postgres -d postgres -c "SELECT :myparam;"
ОШИБКА:  ошибка синтаксиса (примерное положение: ":")
LINE 1: SELECT :myparam;
               ^



Хотя интаксис один в один.

Подскажите пожалуйста, как сделать чтобы второй вариант заработал?
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39790512
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,
----------пример bash-файла, который принимает параметр и передает его как параметр в запрос --------
DSKalugin#!/bin/bash

if [ $# != 1 ]; then
echo "please enter a FILENAME.CSV as parameter"
exit 1
fi

set -e
set -u

export PGHOST=localhost
export PGPORT=5432
export PGDATABASE=указать
export PGUSER=указать
export PGPASSWORD=указать

SQL="select * from public.distr_import('$1');"
RESULT=$(psql -X -A -E -t -q --set AUTOCOMMIT=on -c "$SQL")
psql_exit_status=$?

if [ $psql_exit_status != 0 ]; then
echo "psql failed while trying to run this sql with EXITCODE=$psql_exit_status"
exit $psql_exit_status
fi

echo "$RESULT"
exit 0
-----------
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39791994
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комитА вот так не получается:

Код: sql
1.
2.
3.
4.
psql --set="myparam='Helo,World'" -U postgres -d postgres -c "SELECT :myparam;"
ОШИБКА:  ошибка синтаксиса (примерное положение: ":")
LINE 1: SELECT :myparam;
               ^



Хотя интаксис один в один.

Подскажите пожалуйста, как сделать чтобы второй вариант заработал?
Второй вариант работать не будет. Команда ключа -c отправляется на сервер как есть, без преобразований.
...
Рейтинг: 0 / 0
Как передать переменную в psql ?
    #39792030
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Лузанов,

можно передать параметр серверу.
т.е. отказаться от клиентской подстановки psql-я
но будет мало похоже на юзебл кейс "внешней переменной".

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
:~$ psql  -U postgres -d postgres -c "set my.myparam='Helo,World';show my.myparam;"
 my.myparam 
------------
 Helo,World
(1 строка)

:~$ psql  -U postgres -d postgres -c "set my.myparam='Helo,World';select current_setting('my.myparam');"
 current_setting 
-----------------
 Helo,World
(1 строка)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как передать переменную в psql ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]