|
Вытащить функцию штатным методом = pg_restore
|
|||
---|---|---|---|
#18+
Добрый вечер всем. Возникла необходимость вытаскивать функции из БД в автоматическом режиме. Написал Sell скрипт который создаёт резервные копии БД с отсевом по схемам и таблицам (остается только то что нужно мне, а не все подряд) Код: sql 1. 2. 3.
Затем тот же скрипт, должен вытащить функции по отдельности - каждую в свой файл ( работа с GIT версиями ). И вот тут полная засада. Код: sql 1. 2. 3.
то есть вытащить таблицу - не проблема. Я её открываю и внутри все данные нормальные Но вот вытащить функцию - никак не получается. Код: sql 1. 2. 3. 4.
Я делаю так (ну перепробовал уже вариантов 20, чего только не подставлял): Код: sql 1. 2.
Один раз даже что то вытащилось (код вытаскивания не помню), но там полная ерунда - какая то служебная информация в 11 строках кода, когда сама функция на 1500 строк кода. Явно вытащилось не то. При этом в документации к PostgreSQL 13 написано, что название функции должно точно соответствовать названию в list файле. Вот что я имею: Код: sql 1. 2. 3. 4. 5.
Вот этот же list файл со списком данных (функций) внутри него: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Вроде бы как есть план "Б" - пока к нему не приступал. Код: sql 1. 2.
Но задело за живое - в инструкции написано что можно вытаскивать функции, а на деле - никак. У кого какие идеи? . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 17:43 |
|
Вытащить функцию штатным методом = pg_restore
|
|||
---|---|---|---|
#18+
О-О-О, Hm, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Всё работает. У вас вероятные проблемы или с указанием схемы или с указанием аргументов функции при вызове pg_restore. Я КАТЕГОРИЧЕСКИ НЕ советую использовать в названиях любых обьектов базы что то кроме Latin1 символов. Попробуйте с функцией с нормальным английским названием. Гарантии что оно будет работать корректно с русскими именами никто не даст (100% не проверялось никем). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2021, 18:30 |
|
Вытащить функцию штатным методом = pg_restore
|
|||
---|---|---|---|
#18+
Maxim Boguk Спасибо. Направление понял. Сделал в тестовой схеме public функцию test_01() Если восстанавливать вот так pg_restore путь/test_db_full.fc -P test_01 --file=путь/db777.txt то выводит как раз служебную информацию без самой функции. Если написать вот так pg_restore путь/test_db_full.fc -P test_01() --file=путь/db777.txt то пишет: Код: sql 1.
А вот если заключить функцию в ОДИНАРНЫЕ кавычки , то все работает: Код: sql 1.
Я же делал без кавычек или с ДВОЙНЫМИ кавычками (как в Python) В итоге, если название функции заключить в одинарные кавычки - то все получается нормально. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Но это просто функция (без входных параметров) и название на английском языке. Попробую все то же самое для моего случая и отпишусь. . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 07:53 |
|
Вытащить функцию штатным методом = pg_restore
|
|||
---|---|---|---|
#18+
В общем пишу - все получилось. Главное функцию заключать в одинарные кавычки. Если при этом в параметрах функции указать неверные данные, к примеру вместо (text[]) указать (_text), то получите вот такое сообщение, как и просто при выводе функции без параметров [без "()"] Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Если же указать название функции в кавычках, типа Код: sql 1.
то получаем реальный код функции с некоторыми добавками, которые не меняются (при работе в GIT версиями они будут оставаться одинаковыми). И да, русские буквы в названии функции без проблем - работает все как надо. . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2021, 08:06 |
|
|
start [/forum/topic.php?fid=53&msg=40089923&tid=1993908]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 276ms |
total: | 394ms |
0 / 0 |