Ma requête (pour créer une nouvelle table à partir d'une table existante) prend très longtemps. J'ai donc mis en place une base de données distante dans mon bureau - plus de RAM là-bas.
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 depuis le terminal sans avoir à attendre une réponse?
(postgresql-9.2, environnement Linux)
Edit: je suis ouvert à d'autres solutions, il n'est pas nécessaire d'utiliser psql
la source
tmux
fonctionne- t-il de cette façon: «Pourrai-je arrêter ma machine locale et la requête sera toujours traitée sur le serveur distant»?psql
le logiciel client est-il en cours d'exécution sur votre machine locale, puistmux
sessh
connecte-t-il à une machine distante exécutant un serveur postgres? Si c'est le cas, j'ai malheureusement réalisé que cela ne fonctionnera pas avec une instance Redshift sans qu'un EC2 ne fonctionne également.Vous pouvez essayer d'envoyer
psql
en arrière-plan:Ou, en vous connectant à la base de données locale, vous pouvez utiliser
dblink
pour envoyer une requête vers la base de données distante:Notez que
dblink_send_query
vous ne pouvez envoyer qu'une seule requête à la fois. Donc, si vous souhaitez exécuter plusieurs instructions SQL, ce n'est pas votre solution.Ou, vous pouvez démarrer un
pg_agent
travail sur le serveur distant, ce qui ne nécessite aucune intervention manuelle, par conséquent, l'état de votre box d'accueil n'a aucun effet sur l'exécution de votre travail. La même chose peut être obtenue en configurant un travailcron
(ou mieux encore,at
merci Erwin) exécutant votre script.En outre, si vous avez un travail long que vous démarrez manuellement, vous pouvez démarrer une
screen
session sur le serveur et exécuter le fichier à partir de là. Dans ce cas, vous pouvez vous déconnecter et rentrer chez vous, et le script continuera de fonctionner.la source
at
commande peut vous servir mieux que cron.