web-dev-qa-db-fra.com

Comment exécuter une requête de PSQL sans attendre le résultat?

Ma requête (pour créer une nouvelle table de la table existante) prend très longtemps. Donc, j'ai mis en place une base de données distante dans mon bureau - more RAM là.

Je peux me connecter à ma base de données de la maison comme d'habitude avec PSQL.

Comment puis-je dire au serveur distant d'exécuter ma requête à partir du terminal sans avoir à attendre une réponse?

(PostgreSQL-9.2, Enviroment Linux)

Edit: Je suis ouvert à d'autres solutions, il n'est pas nécessaire d'utiliser psql

9
user528025

Vous pouvez essayer d'envoyer psql à l'arrière-plan:

psql -f your_sql_file.sql &

Ou, se connectant à la DB locale, vous pouvez utiliser dblink pour envoyer une requête à la télécommande DB:

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

Notez que dblink_send_query ne peut envoyer qu'une requête à la fois. Donc, si vous souhaitez exécuter plusieurs instructions SQL, ce n'est pas votre solution.

Ou, vous pouvez commencer un pg_agent Job sur le serveur distant, qui ne nécessite aucune intervention manuelle, l'état de votre boîte à domicile n'a aucun effet sur l'exécution de votre travail. La même chose peut être réalisée en mettant en place un cron (ou même mieux, at - Merci, ERWIN) EXÉCUTION DE VOTRE SCRIPTION.

De plus, si vous avez un travail de course à long terme que vous commencez manuellement, vous pouvez commencer une session screen Session sur le serveur et exécuter le fichier à partir de là. Dans ce cas, vous pouvez vous déconnecter et rentrer à la maison et le script continuera à courir.

8
dezso