|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
Привет! Не смог найти как выполнять командную строку из plpgsql. Конкретно интересует pg_dump и pg_restore. Нашел только вариант с COPY ... FROM PROGRAM. Это единственный правильный вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 12:31 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407 Привет! Не смог найти как выполнять командную строку из plpgsql. месье знает толк в извращениях ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 14:17 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407 Привет! Не смог найти как выполнять командную строку из plpgsql. Конкретно интересует pg_dump и pg_restore. Нашел только вариант с COPY ... FROM PROGRAM. Это единственный правильный вариант? Только copy from program это единственный вариант но в 99% случаев если вам такое надо вы делаете что то ОЧЕНЬ НЕ ТО на уровне архитектуры. Не надо так. А уж тем более не надо так оформлять вызовы pg_dump/pg_restore. pl/pgsql не для этого. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 15:38 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
Ну, что тут поделаешь, если то, что есть на некоторых СУБД (BACKUP DATABASE, RESTORE DATABASE), тут можно сделать только с помощью извращений. У меня задача, сделать бекап, восстановить его на том же сервере под другим именем, сделать кое-что с данными и забекапить это в нужно место. Делать все это надо к удаленного компа. Тривиальная задача в том же MSSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 16:25 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407 Ну, что тут поделаешь, если то, что есть на некоторых СУБД (BACKUP DATABASE, RESTORE DATABASE), тут можно сделать только с помощью извращений. У меня задача, сделать бекап, восстановить его на том же сервере под другим именем, сделать кое-что с данными и забекапить это в нужно место. Делать все это надо к удаленного компа. Тривиальная задача в том же MSSQL. Что мешает использовать pg_dump\pg_restore\psql с удаленного компа? >У меня задача, сделать бекап, восстановить его на том же сервере под другим именем, pg_dump -h host1 -d mydb1 | psql -h host1 -d mydb2 >сделать кое-что с данными и забекапить это в нужно место pg_dump -h host1 -d mydb1 | ssh username@mystorage "cat > /tmp/dump.sql" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 16:50 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407 Ну, что тут поделаешь, если то, что есть на некоторых СУБД (BACKUP DATABASE, RESTORE DATABASE), тут можно сделать только с помощью извращений. У меня задача, сделать бекап, восстановить его на том же сервере под другим именем, сделать кое-что с данными и забекапить это в нужно место. Делать все это надо к удаленного компа. Тривиальная задача в том же MSSQL. ssh на сервер с базой и делаем всё что надо (правильный путь). или спокойно себе pg_dump на свой хост и оттуда pg_restore (странный и кривоватый путь но тоже можно пока база маленькая). А вот то что вы хотите - это неправильный путь. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2021, 17:50 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
gav21 Что мешает использовать pg_dump\pg_restore\psql с удаленного компа? Потому что в этом случает будет гнаться траффик туда-обратно. Если база большая, а канал медленный - это может быть очень долго. Мне нужно все это делать из своего приложения без дополнительной настройки клиента и сервера и использования стороннего софта. Это не разовая задача и не для одного конкретного сервера. Может это "неправильный путь", но пока, кажется, единственный. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2021, 11:37 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407, через дблинк не проще будет сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2021, 14:32 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
alex407 gav21 Что мешает использовать pg_dump\pg_restore\psql с удаленного компа? Попробуйте расширение PL/sh ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2021, 15:22 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
uGNot alex407 пропущено... Мне нужно все это делать из своего приложения без дополнительной настройки клиента и сервера и использования стороннего софта. Это не разовая задача и не для одного конкретного сервера. Попробуйте расширение PL/sh pl/python тоже можно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2021, 16:29 |
|
Вызов командной строки из plpgsql
|
|||
---|---|---|---|
#18+
Как вариант, своя утилита на C, которая будет вызываться функцией с PostgreSQL. Пример получить текущий hostname из PostgreSQL: https://wiki.postgresql.org/wiki/Pg_gethostname Перезапуск СУБД: Создаем файл aaa.c, внутри которого что-то типа: #include <stdlib.h> #include <stdio.h> int main(void) { int status = system("sudo systemctl restart postgresql-11"); printf("статус: %d\n", status); // статус, отличный от 0 говорит об ошибке запуска внешней программы. return status; } Далее $ gcc aaa.c $ ./a.out Если сделать по аналогии с примером hostname выше это позволит перезагружать СУБД запустив функцию в СУБД. Только команда будет выполнена от имени того же пользователя, от которого запущен процесс postgresql. Если это пользователь ОС postgres, нужно позаботиться о том, что из под него эта команда отработает без лишних вопросов: # su - postgres $ sudo systemctl restart postgresql-11 Если будет выдан запрос пароля на использование sudo (у меня для postgres в ОС вообще запрещен вход в систему и у него нет пароля), то нужно разрешить конкретную команду после sudo для пользователя/группы postgres без запроса паролей в /etc/sudoers: %postgres ALL=NOPASSWD: /bin/systemctl restart postgresql-11 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 17:42 |
|
|
start [/forum/topic.php?fid=53&msg=40081167&tid=1993919]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 135ms |
0 / 0 |