결과를 기다리지 않고 psql에서 쿼리를 실행하는 방법은 무엇입니까? 쿼리에 시간이 오래 걸립니다. 그래서 사무실에

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

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

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

(postgresql-9.2, 리눅스 환경)

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



답변

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

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


답변

당신은 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경우 서버 에서 세션을 시작하고 거기서 파일을 실행할 수 있습니다. 이 경우 로그 오프하고 집으로 돌아갈 수 있으며 스크립트는 계속 실행됩니다.