如果你做所有服務器端而不是使用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