暂无图片
postgreSQL 导出全量表结果,怎么导 ?
我来答
分享
暂无图片 匿名用户
postgreSQL 导出全量表结果,怎么导 ?

postgreSQL 导出全量表结果,怎么导 ?

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
怕晒的太阳

pg_dump -t 模式.表名 数据库 -a -f xxx.sql 只导出数据或者直接用copy

暂无图片 评论
暂无图片 有用 0
shunwahⓂ️

1、导出数据表(pg_dump)
导出表为txt文本

$ pg_dump -t httab -f httab.txt htdb
$ ll
-rw-rw-r--. 1 postgres postgres 429564 Aug 24 00:19 httab.txt

导出表为dmp文件

$ pg_dump -t httab -FC -f httab.dmp htdb
$ ll
-rw-rw-r--. 1 postgres postgres 243696 Aug 24 00:22 httab.dmp

导出表定义

$ pg_dump -t httab -s -f httab.metadata htdb
$ ll
-rw-rw-r--. 1 postgres postgres   1501 Aug 24 00:22 httab.metadata
参数说明:

-t:指定表名
-f:指定导出文件名
-Fc:默认导出文件格式为文本,-Fc使用用户自定义格式
-s:只导出表定义

注意:若想导出索引只能导出索引创建语句,不导出索引数据

2、恢复导出文件到数据库
根据导出格式不同,恢复命令也不相同
(1)恢复dmp格式文件(pg_restore)
删除当前数据库已有表

$ psql -c 'select count(1) from  httab' -Uhtuser htdb
 count 
-------
 10000
(1 row)
$ psql -c 'drop table httab' -Uhtuser htdb
DROP TABLE

将dmp格式文件恢复到数据库

$ pg_restore -Uhtuser -d htdb httab.dmp
$

验证:

$ psql -c 'select count(1) from  httab' -Uhtuser htdb
 count 
-------
 10000
(1 row)

(2)恢复txt格式文件(psql)
删除当前数据库已有表

$ psql -c 'drop table httab' -Uhtuser htdb
DROP TABLE

将txt格式文件恢复到数据库

$ psql -Uhtuser htdb < httab.txt
SET
SET
SET
SET
SET
 set_config 
------------
 
(1 row)

SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
ALTER SEQUENCE
ALTER TABLE
COPY 10000
 setval 
--------
  10000
(1 row)

ALTER TABLE

验证:

$ psql -c 'select count(1) from  httab' -Uhtuser htdb
 count 
-------
 10000
(1 row)

补充说明:

pg_dump 实质是用 copy 命令跑的,只不过普通用户没有权限,可以用\copy

二者区别:

copy :使用pg数据库本地的文件
\copy :使用客户端本地的文件

https://blog.csdn.net/ly7472712/article/details/126785291

暂无图片 评论
暂无图片 有用 0
ora_221
2022-12-02
szrsu
2022-12-03

学习了!

暂无图片 评论
暂无图片 有用 4
szrsu
暂无图片

学习了

暂无图片 评论
暂无图片 有用 0
游湖
学习了
暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏