在一个网站上,我有一些在临时数据库上工作的脚本。在脚本开始之前,我从生产数据库中删除并重新创建临时数据库。在该过程结束时,我想使用临时数据库中这些脚本的结果更新生产数据库,但保留脚本运行时发生的修改(几个小时)。
我知道在 postgreSQL 中没有实现替换,但我发现这个解决方案对我有用:How to UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) in PostgreSQL?
我的问题是,对于这个解决方案,我必须将两个数据库链接在一起,据我所知,这也没有在 postgreSQL 中实现,所以我必须将表从临时数据库复制到实时数据库,但我必须更改同时表的名称以防止重复值或防止不必要的更改。我有大约 30 个表,但其中只有大约一半是由脚本修改的,所以如果我可以限制这些表的工作,那就太好了。据我所知,这是将临时数据库中的 pg_dump 到文件中并将它们插入到生产表中的唯一方法,但这不是太优雅的解决方案,而且它可能也太慢了。
我怎样才能有效地解决这个问题?
我在 Linux (Ubuntu) 上有 postgreSQL 8.3 和 root 访问权限。