Postgres - zapis wyniku wykonania funkcji do csv/txt

Postgres - zapis wyniku wykonania funkcji do csv/txt
A0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Cześć,
Mam taki problem przygotowuję sobie funkcję wygląda mniej więcej tak:

Kopiuj
do $$
declare 
   n int;
begin
     select count(*) into n from .....
     if n = 1 
         select nr_2
         if not found then raise notice ' brak rekordów';
         else 
              update ..... 
       end if;
else 
    update innej tabeli ; 
end if;
end;$$

I w zależności który update się wykona chcę zapisać opis do pliku w formie np.
User = Jan
Data wykonania: current_date
Status: aktualizacja udana

O ile użycie raise notice w pgadmin lub nawet przez psql zwraca te dane, to nie mam pojęcia jak wrzucić te dane do pliku csv, który byłby nadpisywany. Próbowałem robić returning, ale mam informację, że nie wskazałem gdzie ma się to zapisać.
Gdy wykonuje takie polecenie w Windowsa:
psql -h host -p port -U user -d db -f file_with_script >> output_file to nadpisuje mi plik ale jest to informacja np. update, i tyle
Czy ktoś podpowie jak to ogarnąć ?

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
1

Ja bym popatrzył na to https://www.postgresql.org/docs/10/sql-copy.html. Nie pomyl tylko klienta z serwerem - plik będzie się zapisywał na serwerze.

A0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

A Copy weźmie dane z tabeli, a mi bardziej zależy na tym, aby do pliku zapisać informacje o samym procesie ( w tym przypadku ) update. Zakładam, że z mojego przykładu wykonuje sie update pierwszy gdy znalazłem jeden pasujący rekord. Gdy update się wykona chcę zapisać do pliku: datę wykonania, opis np. proces wykonany poprawnie ( czy coś w ten deseń) i np. nazwę użytkownika jaką podam na wejściu. A tym przypadku nie interesują mnie dane z aktualizowanej tabeli.
Chyba, że copy zadziała w ten sposób.

Albo np. wykonuje się 1 select i nie znajduje żadnego rekordu: zapisz do pliki datę i opis: użytkownik o tej nazwie nie istnieje.
Chyba, że jest opcja zadeklarowania zmiennej i w zależności jaki IF będzie true to zapisz do tej zmiennej odpowiedni komunikat a na końcu zapisz go do pliku ? Muszę to sprawdzić czy coś takiego zadziała.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

Czy RAISE spełni twoje wymagania?
EDIT: Widzę że używasz, więc nie rozumiem pytania...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.