2013-04-17 5 views
6

Załóżmy na przykład, że chcę zaimportować plik CSV ze ścieżki na tym samym komputerze, na którym działa serwer postgres.Czy można odwoływać się do zmiennej środowiskowej w komendzie poresres sql?

W systemie ustawiono zmienną środowiskową MyPath na '/path/to/my/csv/file/'.

mogłem łatwo zaimportować plik CSV następująco:

COPY MyTable FROM 
'/path/to/my/csv/file/myTable.csv' 
DELIMITERS ',' 
CSV HEADER; 

Czy można odwołać się do zmiennej mojasciezka od wewnątrz to postgres polecenia SQL? Coś wzdłuż następujących linii:

COPY MyTable FROM 
get_environmental_variable('MyPath') || 'myTable.csv' 
DELIMITERS ',' 
CSV HEADER; 

Odpowiedz

3

Jeśli zainstalujesz PL/R, można użyć funkcji plr_environ(), aby uzyskać listę zmiennych środowiskowych i ich wartości jako COPY MyTable from (SELECT VALUE FROM plr_environ() WHERE name = 'MyPath'); inne języki procedur składowanych prawdopodobnie mają podobne sposoby - w plpythonie, wyobrażam sobie, że można użyć os.environ ['MyPath'], plperlu ma dostęp do skrótu% ENV, i tak dalej. Jeśli potrzebujesz dalszej pomocy, zostaw komentarz, a ja z przyjemnością zajmiemy się tym dalej.

6

Spróbuj podczas uruchamiania

psql --set 'var=foo' -c '\i thesqlscript' 

i to w zapytaniu

update table set column = :var; 

To jest wzięte z this question on the forum

Jeśli używasz starszej wersji PostgreSQL, to wygląda to samo pytanie zadawane in the postgres forum (choć to jest wiele lat temu). Nie ma bezpośredniej drogi, ale dali kilka obejść.

Powiązane problemy