Moje zapytanie (aby utworzyć nową tabelę z istniejącej tabeli) zajmuje bardzo dużo czasu. Więc skonfigurowałem zdalną bazę danych w moim biurze - jest tam więcej pamięci RAM.
Mogę połączyć się z moją bazą danych z domu jak zwykle za pomocą psql.
Jak mogę powiedzieć zdalnemu serwerowi, aby wykonał moje zapytanie z terminala bez konieczności oczekiwania na odpowiedź?
(postgresql-9.2, środowisko Linux)
Edycja: Jestem otwarty na inne rozwiązania, nie trzeba używać psql
źródło
tmux
działa to w ten sposób: „Czy będę mógł zamknąć moją maszynę lokalną, a zapytanie nadal będzie przetwarzane na zdalnym serwerze?”psql
czy oprogramowanie klienckie działa na komputerze lokalnym, a następnietmux
nawiązujessh
połączenie z komputerem zdalnym, na którym działa serwer Postgres? Jeśli tak jest, niestety zdałem sobie sprawę, że to nie będzie działać z instancją Redshift bez uruchomionego EC2.Możesz spróbować wysłać
psql
w tle:Lub, łącząc się z lokalną bazą danych, możesz użyć
dblink
do wysłania zapytania do zdalnej bazy danych:Pamiętaj, że
dblink_send_query
możesz wysłać tylko jedno zapytanie naraz. Więc jeśli chcesz uruchomić wiele instrukcji SQL, to nie jest twoje rozwiązanie.Lub możesz rozpocząć
pg_agent
zadanie na zdalnym serwerze, co nie wymaga ręcznej interwencji, dlatego stan twojego urządzenia domowego nie ma wpływu na uruchomienie zadania. To samo można osiągnąć, ustawiająccron
(lub jeszcze lepiejat
- dzięki Erwin) zadanie wykonania skryptu.Ponadto, jeśli masz długo działające zadanie, które uruchamiasz ręcznie, możesz rozpocząć
screen
sesję na serwerze i uruchomić plik z tego miejsca. W takim przypadku możesz się wylogować i wrócić do domu, a skrypt będzie działał dalej.źródło
at
polecenie może ci służyć lepiej niż cron.