匿名用户postgreSQL 导出全量表结果,怎么导 ?
postgreSQL 导出全量表结果,怎么导 ?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
5条回答
默认
最新
pg_dump -t 模式.表名 数据库 -a -f xxx.sql 只导出数据或者直接用copy
评论
有用 01、导出数据表(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回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏




