1

我有一个 PostgreSQL 数据库,只有一张表。每天,我都想导出数据WHERE date='whatever',所以它只转储我今天管理的数据。

然后,我转到另一个数据库,并导入该 DUMP 文件,但我不想覆盖我已经拥有的文件,而是想追加到它......

我正在尝试在 C# 控制台应用程序上执行此操作...有什么建议吗?

谢谢你。

4

1 回答 1

2

不要这样做。为此目的使用现有维护良好的解决方案之一,如 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"

手册上COPY

您可以在您的 C# 应用程序中执行相同的操作,方法是建立两个 PostgreSQL 连接,一个连接一个COPY FROM,另一个连接一个COPY TO,然后复制它们之间的行。您会发现 nPgSQL 的支持COPY对此很有用。

于 2013-06-12T23:59:30.473 回答