将 PostgreSQL SQL 转储转换为 PostgresSQL 自定义格式转储
Convert PostgreSQL SQL dump to PostgreSQL custom-format dump
我的用例如下:
- 我有 PostgreSQL 使用
pg_dump -F p
转储(纯文本 SQL 脚本文件),我无法控制它们的制作方式
- 我喜欢
pg_restore
灵活性(--no-owner、--data-only、--clean 等)
我知道我应该将 psql
与纯文本 SQL 转储一起使用,但是 有什么方法可以转换 SQL 转储进入 PostgreSQL 自定义格式转储 以便我可以使用 pg_restore 或某种获取其所有选项的方法?
感谢关注
正如另一个answers/comments提到的,你不能直接转换它。您应该做的是从 sql 备份文件创建一个临时数据库,并使用 pg_dump 从中创建自定义格式。
检查 sql 备份不是 "clean" 恢复文件,这意味着它不会删除文件顶部的数据库。如果是,删除 "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
我的用例如下:
- 我有 PostgreSQL 使用
pg_dump -F p
转储(纯文本 SQL 脚本文件),我无法控制它们的制作方式 - 我喜欢
pg_restore
灵活性(--no-owner、--data-only、--clean 等)
我知道我应该将 psql
与纯文本 SQL 转储一起使用,但是 有什么方法可以转换 SQL 转储进入 PostgreSQL 自定义格式转储 以便我可以使用 pg_restore 或某种获取其所有选项的方法?
感谢关注
正如另一个answers/comments提到的,你不能直接转换它。您应该做的是从 sql 备份文件创建一个临时数据库,并使用 pg_dump 从中创建自定义格式。
检查 sql 备份不是 "clean" 恢复文件,这意味着它不会删除文件顶部的数据库。如果是,删除 "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