将PostgreSQL SQL转储转换为PostgreSQL自定义格式转储

问题描述 投票:0回答:2

我的用例如下:

  • 我有使用pg_dump -F p(纯文本SQL脚本文件)制作的PostgreSQL转储,我无法控制它们是如何制作的
  • 我喜欢pg_restore的灵活性( - no-owner, - data-only, - clean等)

我知道我应该使用psql和纯文本SQL转储,但有没有办法将SQL转储转换为PostgreSQL自定义格式转储,所以我可以使用pg_restore,或者某种方式来获取所有选项?

感谢您的关注。

postgresql pg-dump
2个回答
1
投票

正如提到的其他答案/评论,您无法直接转换它。你应该做的是从sql备份文件创建一个临时数据库,并使用pg_dump从中创建自定义格式。

检查sql备份是否不是“干净”还原文件,这意味着它不会将数据库放在文件的顶部。如果是,删除“DROP DATABASE dbase”..

创建临时数据库:

psql
CREATE DATABASE mytempdb;
\q

然后恢复您拥有的备份:

psql mytempdb < my_database_backup.sql

注意:这就是为什么你不希望sql文件顶部的“drop database ...”行。它将删除原始数据库。

将其转储为自定义格式:

pg_dump mytempdb -Fc -f custom_format.dump

0
投票

使用pg_dump获取明文格式后,无法进行自定义格式化。

pg_dump -d dbname> data.sql使用下面的方法我们可以恢复

psql -d dbname -f data.sql

自定义格式:pg_dump --create --clean -h <127.0.0.1> -p 5432 -d dbname -Fc -f data.sql

恢复:pg_restore -h <127.0.0.1> -p 5432 -d dbname -C -Fd /tmp/data.sql

© www.soinside.com 2019 - 2024. All rights reserved.