我的用例如下:
pg_dump -F p
(纯文本SQL脚本文件)制作的PostgreSQL转储,我无法控制它们是如何制作的pg_restore
的灵活性( - no-owner, - data-only, - clean等)我知道我应该使用psql
和纯文本SQL转储,但有没有办法将SQL转储转换为PostgreSQL自定义格式转储,所以我可以使用pg_restore,或者某种方式来获取所有选项?
感谢您的关注。
正如提到的其他答案/评论,您无法直接转换它。你应该做的是从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
使用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