我的用例如下:
pg_dump -F p
(纯文本SQL脚本文件)制作的PostgreSQL转储,我无法控制它们的制作方式pg_restore
的灵活性(-无所有者,-仅数据,-clean等)我知道我应该在纯文本SQL转储中使用psql
,但是 有什么方法可以将SQL转储转换为PostgreSQL自定义格式转储 >这样我就可以使用pg_restore或通过某种方式获取其所有选项?
感谢您的关注。
答案 0 :(得分:1)
正如其他答案/评论所述,您不能直接将其转换。您应该做的是从sql备份文件创建一个临时数据库,然后使用pg_dump从中创建自定义格式。
检查sql备份不是“干净的”还原文件,这意味着它不会将数据库放在文件顶部。如果是这样,请删除“ DROP DATABASE dbase”。
创建一个临时数据库:
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {11C1100F-B9F8-4105-9516-95973732AD48}
ISWCFSolution = True
Locked = False
UnLocked = True
EndGlobalSection
然后将备份还原到该备份:
psql
CREATE DATABASE mytempdb;
\q
注意:这就是为什么您不希望sql文件顶部的“ drop database ...”行。它将删除您的原始数据库。
将其转储为自定义格式:
psql mytempdb < my_database_backup.sql
答案 1 :(得分: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