2019/10/23

[postgres] 備份及匯入單一 table 大量資料

在 postgres 最常用的備份方式為 pg_dump,但如果要備份超大 table 裡的部分資料,可以使用 COPY
利用 psql 連線到資料庫,COPY 後面先接 SQL,設定資料匯出的條件,後面再接匯出的檔名及格式。
-- 複製建立時間為 2019/10 的資料
COPY (
  SELECT * FROM trade 
  WHERE create_time >= '2019-10-01 00:00:00' AND create_time < '2019-11-01 00:00:00'
  ) TO 'file/path/record_201910.csv' WITH (FORMAT CSV);
若要將資料匯入一樣可以使用 COPY
-- 在當前的 session 將全部的 trigger 關閉
SET session_replication_role = replica;
COPY trade FROM 'file/path/record_201910.csv' CSV;
Reference
https://www.postgresql.org/docs/9.6/sql-copy.html

沒有留言:

張貼留言