결과를 기다리지 않고 psql에서 쿼리를 실행하는 방법은 무엇입니까?


9

기존 테이블에서 새 테이블을 만들려면 내 쿼리에 시간이 오래 걸립니다. 그래서 사무실에 원격 데이터베이스를 설정했습니다. 더 많은 RAM이 있습니다.

psql을 사용하여 평소처럼 집에서 데이터베이스에 연결할 수 있습니다.

응답을 기다릴 필요없이 원격 서버가 터미널에서 쿼리를 실행하도록하려면 어떻게해야합니까?

(postgresql-9.2, 리눅스 환경)

편집 : 다른 솔루션을 사용할 수 있으므로 psql을 사용할 필요가 없습니다.

답변:


6

다른 솔루션을 사용할 수 있다고 말했기 때문에 screen 또는 tmux 와 같은 터미널 멀티플렉서를 보는 것이 좋습니다 . 제 생각에는 tmux는 고유 한 이름으로 인해 더 나은 선택입니다 (검색 엔진에서 관련 조회수를 얻는 것이 더 쉽습니다).

기본적으로 이런 종류의 소프트웨어를 사용하면 셸에서 분리 한 다음 세션을 다시 시작할 수 있습니다.


1
합니까는 tmux'나는 종료에 내 로컬 컴퓨터 수있을 것인가, 쿼리는 여전히 원격 서버에서 proccessed 얻을':이 방식으로 작동?
dezso 2009 년

예, 세션이 원격 시스템에서 실행 중입니다. 정전 또는 인터넷 연결 유실은 문제가되지 않습니다 (원격 세션과 관련하여). 터미널 멀티플렉서 (afaik) 내에서 프로세스를 시작해야합니다.
c0dem4gnetic

이것이 어떻게 구현되는지에 대한 지침을 제공 할 수 있습니까? psql클라이언트 소프트웨어 그게 전부는, 로컬 컴퓨터에서 실행 tmux하고 있습니다 ssh포스트 그레스 서버를 실행하는 원격 컴퓨터에 연결을? 이 경우 슬프게도 EC2를 실행하지 않으면 Redshift 인스턴스에서 작동하지 않는다는 것을 슬프게 깨달았습니다.
멀린

@Merlin tmux는 원격 시스템에서 실행되고 셸 세션을 설정합니다. 이것으로부터 분리하고 붙입니다. psql을 로컬로 실행할 때는 tmux 세션에서 실행할 수 있지만 네트워크 조건이 허용하는 한 (일반적인 ssh 세션과 마찬가지로) 클라이언트 연결 만 유지됩니다.
c0dem4gnetic

@ c0dem4gnetic 나는 원격 서버에 psql이 여전히 설치되어 있어야한다고 생각합니다. 로컬 tmux-> EC2 + tmux + psql이 redshift / postgres db에 로깅하여 세션을 유지하는 것처럼 보입니다.
멀린

8

당신은 psql배경으로 보낼 수 있습니다 :

psql -f your_sql_file.sql &

또는 로컬 DB에 연결 dblink하면 원격 DB에 쿼리를 전달할 수 있습니다 .

SELECT dblink_connect('your_connection_name', 'your_connection_string');
SELECT dblink_send_query('your_connection_name', 'your_query');

참고 dblink_send_query한 번에 하나 개의 쿼리를 보낼 수 있습니다. 따라서 여러 SQL 문을 실행하려는 경우 솔루션이 아닙니다.

또는 pg_agent수동 개입없이 원격 서버에서 작업을 시작할 수 있으므로 홈 박스 상태가 작업 실행에 영향을 미치지 않습니다. 스크립트를 실행 하는 cron(또는 더 나은 at-Erwin) 작업 을 설정하여 도 마찬가지 입니다.

또한 수동으로 시작하는 장기 실행 작업이있는 screen경우 서버 에서 세션을 시작하고 거기서 파일을 실행할 수 있습니다. 이 경우 로그 오프하고 집으로 돌아갈 수 있으며 스크립트는 계속 실행됩니다.


pg_agent는 유망한 것으로 보입니다. 나는 그것을 시도하고 결과를 업데이트 할 것입니다.
user528025

3
또는 일회성 작업의 경우 at명령 이 cron보다 나은 기능을 제공 할 수 있습니다.
Erwin Brandstetter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.