Web サイトには、一時データベースで動作するスクリプトがいくつかあります。スクリプトを開始する前に、本番データベースから一時データベースを削除して再作成します。プロセスの最後に、一時データベースからのこれらのスクリプトの結果で本番データベースを更新したいと思いますが、スクリプトの実行中に発生した変更を保持します (数時間)。
置換先がpostgreSQLに実装されていないことは知っていますが、私にとってはうまくいくこの解決策を見つけました: How to UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) in PostgreSQL?
私の問題は、このソリューションでは2つのデータベースをリンクする必要があることです。これもpostgreSQLに実装されていないことがわかったので、一時データベースからライブデータベースにテーブルをコピーする必要がありますが、その間、テーブルの名前を変更して、値の重複を防止したり、不要な変更を防止したりします。約 30 のテーブルがありますが、スクリプトによって変更されるのは約半分だけなので、作業するテーブルを制限できれば素晴らしいと思います。一時データベースからファイルに pg_dump し、それらを本番テーブルに挿入する唯一の方法を見つけた限り、それはあまりにもエレガントなソリューションではなく、おそらく遅すぎるでしょう.
この問題を効果的な方法で解決するにはどうすればよいですか?
Linux (Ubuntu) で postgreSQL 8.3 を使用しており、ルート アクセス権があります。