テーブルが 1 つある PostgreSQL データベースがあります。毎日、データをエクスポートしたいWHERE date='whatever'
ので、今日管理したデータのみをダンプします。
次に、別のデータベースに移動し、その DUMP ファイルをインポートしますが、既に持っているものを上書きするのではなく、追加したい...
これを C# コンソール APP で実行しようとしています... 何か提案はありますか?
ありがとうございました。
テーブルが 1 つある PostgreSQL データベースがあります。毎日、データをエクスポートしたいWHERE date='whatever'
ので、今日管理したデータのみをダンプします。
次に、別のデータベースに移動し、その DUMP ファイルをインポートしますが、既に持っているものを上書きするのではなく、追加したい...
これを C# コンソール APP で実行しようとしています... 何か提案はありますか?
ありがとうございました。
このようにしないでください。Bucardo、Londiste、Slony-I など、適切に管理されている既存のソリューションのいずれかを使用してください。
Pg wiki でレプリケーションを参照してください。
Londiste は、少なくとも停止に対処し、追いつきたいときに再開できるため、必要に応じて毎日のバッチとして実行できます。
扱っているのが挿入専用のテーブルだけである場合は、本格的なレプリケーションの必要性を回避できます。必要なのは次のようなものだけです
psql -h host1 db1 -c \
"\copy (SELECT * FROM the_table WHERE the_date = '2012-01-01') TO stdout" \
| psql -h host2 db2 -c \
"\copy the_table FROM STDIN"
C# アプリ内で同じことを行うには、2 つの PostgreSQL 接続を作成し、COPY FROM
1 つを実行し、もう 1 つを実行COPY TO
し、それらの間で行をコピーします。これには、nPgSQL のサポートがCOPY
役立ちます。