如何将纯 SQL 文件转换为压缩的 pgdump 文件?

How do I convert a plain SQL file to a compressed pgdump file?

我有一个普通的 SQL 文件,该文件很大 (>70GB),需要通过慢速连接将其发送到服务器。有什么方法可以将其转换为二进制 pgdump 文件而无需在本地恢复整个数据库?

基本上就是这个问题反了过来:How do I convert a binary pgdump (compressed) to a plain SQL file?

你应该压缩它来传输,但你不需要使用postgres压缩。您可以为此使用 rsync,例如:

rsync -avz dump.sql user@server:/path/dump.sql

将以压缩方式传输转储。要减小尺寸,您可以使用:

rsync -avz --compress-level=9 dump.sql user@server:/path/dump.sql

您也可以使用压缩程序(例如gzipbzip)压缩转储,将其传输并在不解压的情况下读取。

gunzip dump.sql.gz | pg_restore -Upostgres 

正如 Vinícius Gobbo A. de Oliveira 在评论中指出的那样,如果不导入和重新导出转储,这是不可能的。