(既存のテーブルから新しいテーブルを作成するための)クエリに非常に長い時間がかかります。そこで、オフィスにリモートデータベースをセットアップしました-RAMを増やします。
通常どおり、psqlを使用して自宅からデータベースに接続できます。
応答を待たずにターミナルからクエリを実行するようにリモートサーバーに指示するにはどうすればよいですか?
(postgresql-9.2、Linux環境)
編集:私は他のソリューションにオープンです、psqlを使用する必要はありません
(既存のテーブルから新しいテーブルを作成するための)クエリに非常に長い時間がかかります。そこで、オフィスにリモートデータベースをセットアップしました-RAMを増やします。
通常どおり、psqlを使用して自宅からデータベースに接続できます。
応答を待たずにターミナルからクエリを実行するようにリモートサーバーに指示するにはどうすればよいですか?
(postgresql-9.2、Linux環境)
編集:私は他のソリューションにオープンです、psqlを使用する必要はありません
回答:
あなたは他のソリューションに心を開いていると言っているので、screenやtmuxなどのターミナルマルチプレクサーを検討することをお勧めします。私の意見では、tmuxはその一意の名前(検索エンジンで関連するヒットを取得しやすい)のため、より良い選択です。
基本的に、この種のソフトウェアでは、シェルから切り離して、後でセッションを再開できます。
psql
クライアントソフトウェアのthatsは、その後、ローカルマシン上で実行されてtmux
作っているssh
のpostgresサーバを実行しているリモートマシンへの接続を?その場合、悲しいことに、EC2が実行されていないRedshiftインスタンスではこれが機能しないことに気づきました。
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
一度に1つのクエリしか送信できないことに注意してください。したがって、複数のSQLステートメントを実行する場合、これはソリューションではありません。
または、pg_agent
手動の介入を必要としないリモートサーバーでジョブを開始できます。そのため、ホームボックスの状態はジョブの実行に影響を与えません。同じことは、スクリプトを実行するcron
(またはさらに良いことにat
、Erwin)ジョブを設定することによって実現できます。
さらに、手動で開始する実行時間の長いジョブがある場合screen
は、サーバーでセッションを開始し、そこからファイルを実行できます。この場合、ログオフして家に帰れば、スクリプトは引き続き実行されます。
at
コマンドはcronよりも役立つ場合があります。
tmux
このように機能しますか:「ローカルマシンをシャットダウンできますが、クエリはリモートサーバーで引き続き処理されます」?