Windows环境下pg_dump导出文件包含多余非打印字符如何处理?
pg_dump导出文件含非打印控制字符问题说明
你遇到的非打印控制字符不属于导出异常,是你指定的导出格式的固有属性:--format custom参数对应PostgreSQL专属的二进制归档格式,本身就不是纯文本类型,内置的元数据、压缩标识、结构标记会显示为AN^@这类不可打印字符,针对纯文本设计的dos2unix、格式转换类工具自然无法消除这类二进制内容。
针对你的需求,有两类解决方案:
- 如果你需要可直接用文本编辑器打开的纯文本SQL导出文件,无需添加
--format custom参数(pg_dump默认导出格式就是纯文本SQL),调整后的命令如下:
pg_dump -h 127.0.0.1 -U postgres -W --file my_db_dump.sql my_db
- 如果你确实需要使用custom归档格式(用于支持并行恢复、单对象恢复等高级恢复功能),无需做任何格式转换,该文件可以正常通过
pg_restore命令完成数据恢复,恢复命令示例:
pg_restore -h 127.0.0.1 -U postgres -W -d target_db my_db_dump.sql
注意:custom格式的二进制归档文件不要用文本编辑器强行修改,避免破坏结构导致恢复失败
pg_dump没有对应参数可以消除custom格式下的控制字符,这类字符本身是该格式的正常组成部分,不属于问题。
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

