近有个大表需要备份出来做清理,但是空间有限,只能边压边导出,于是想到linux pipe,使用起来也很简单
1.建立管道:
#mknod dumpipe p
2.导出指定表test数据
postgres=# select count(*) from test;
count
-------
601
(1 row)
#pg_dump -h 127.0.0.1 -U postgres -a -t test -f dumpipe & gzip<dumpipe>test.dmp.gz
3.删除数据
postgres=# truncate table test;
TRUNCATE TABLE
postgres=# select count(*) from test;
count
-------
0
(1 row)
4.导入数据,删除管道
#psql -f dumpipe & gunzip <test.dmp.gz >dumpipe
postgres=# select count(*) from test;
count
-------
601
(1 row)
#rm -f dumpipe