2016-10-02 4 views
1

Я хотел бы сделать эквивалент c или php fopen() и fwrite(). Я не пытаюсь сбросить таблицу на диск. Я пытаюсь сделать некоторые отладочные журналы во время разработки.Как я могу записать файл на диск из PL/pgSQL?

+0

Если вам нужны статистические данные о запросе вы должны посмотреть по адресу: https: //www.postgresql.org /docs/9.1/static/sql-explain.html –

+0

На самом деле я пытаюсь проследить проблему логического потока. У меня есть много таких функций для записи, и было бы неплохо, если бы у меня были некоторые отладочные операторы fwrite(), чтобы я мог видеть журнал того, что происходит в моем коде. –

+0

Для общей проблемы «напишите в файл» (не только файл журнала), см. Https://stackoverflow.com/q/48327289/287948 –

ответ

1

Вы можете RAISENOTICE или DEBUG сообщения в функции plpgsql или их DO statement, которые записываются в лог-файл БД.

+0

Мне потребовалось немного времени, чтобы выяснить журнал, но это прекрасно! Спасибо, Эрвин! :-) –

2

Вы можете использовать plpythonu f.open(), f.write(), f.close() в функции postgres для записи в файл.

расширение языка должны быть установлены.,

https://www.postgresql.org/docs/8.3/static/plpython.html

Работа пример из списка рассылки. https://www.postgresql.org/message-id/flat/20041106125209.55697.qmail%40web51806.mail.yahoo.com#[email protected]

, например plpythonu

CREATE FUNCTION makefile(text) RETURNS text AS '\n 
o=open("/path/to/file") 
o.write(args[0]) 
o.close() 
return "ok" 
' LANGUAgE plpythonu; 

С уважением Tino

+0

Привет @ Mokadillion, вы можете получить копию награды/вставить свой ответ на https://stackoverflow.com/q/48327289/287948 –

Смежные вопросы