如果你做所有服务器端而不是使用Springboot应用程序,它将会更快。问题不在于您可以使用pg_dump实用程序或psql -d dbname -t -A -F轻松执行转储/恢复操作“;” -c“SELECT * FROM yourdata WHERE cutdate < = current_timestamp-interval'6 months'”> output.csv
但是,您必须保证导出的所有内容都已加载到第二个数据库中,并且不会删除任何内容尚未导出。
我会首先选择一个主键的子集到临时表中。然后使用服务器端COPY命令导出预选键(和它的依赖性)
COPY (SELECT d.* FROM yourdata d INNER JOIN temporal t WHERE d.pk=t.pk) To '/tmp/yourdata.csv' WITH CSV DELIMITER ',';
所有导出文件已备份数据库生成
DELETE FROM yourdata WHERE pk IN (SELECT pk FROM temporal)
后然后做
COPY yourdata(column1,column2,column3) FROM '/tmp/yourdata.csv' DELIMITER ',' CSV
您可以使用psql命令行工具编写一个在服务器端调用所有命令的脚本,并最后将导入的文件移动到永久位置以防万一错了,你需要再次处理它们。
见Save PL/pgSQL output from PostgreSQL to a CSV file和How to import CSV file data into a PostgreSQL table?
我可以使用的recovery.conf这个? – Tisha
或者在postgressql.conf中有一个db参数(可在amazon rds实例中使用),我可以编辑它 - 可以访问这个脚本吗? – Tisha