如何在Python中读取PostgreSQL转储文件

6
我希望我的Python脚本能够从postgresql转储文件中读取一些数据。Python将在没有postgresql的系统上运行,并需要处理转储文件中的数据。
解析CREATE TABLE调��以查找列名,然后解析INSERT INTO行以构建内容似乎非常简单。但是,在可靠地执行此操作方面可能会有很多陷阱。有没有人知道一个可以做到这一点的模块?

你为什么想要读取PG dump?你的使用场景是什么? - user2665694
我已经说明了我的用例 - 我想读取一些Postgres数据,我需要在一个没有Postgres的系统上执行此操作,但我可以访问数据库转储。 - xorsyst
提供输入文件格式会很有帮助(我相信PostgreSQL有几种导出数据的方式)。有没有可能通过CSV获取数据? - cmd
@cmd 很有趣的想法。不幸的是,这个转储文件是由第三方提供给我的。不过这是一个相当标准的 SQL 事务,我希望已经有人为此编写了解析器。 - xorsyst
将转储文件导入本地开发服务器,然后再将其导出为 CSV。 - user2665694
1
请注意,对于 pg_dump 命令有多种格式可用(纯 SQL、专为 pgsql 制作的 SQL、压缩格式、使用插入或不使用插入等)。对我来说,编写完整的 SQL 解析器是一项非常庞大的工作,似乎确实不太妥当。 - regilero
2个回答

3

所以...七年后,现在有一个专门为此编写的Python包:

pip install pgdumplib

PyPI页面得知,pgdumplib是一个“使用自定义格式读写pg_dump文件的Python3库”。


3
这应该是一条注释而不是答案,因为它只是提供了建议而没有实现。 - mnm
谢谢,我得试一下并比较速度!现在...有一个适用于mysql的吗?;) - xorsyst

0
感谢所有的评论,即使它们大多数是“不要这样做!”;)
给定:
1. 转储始终以相同的格式从第三方系统生成 2. 我需要能够在另一个没有postgres的第三方系统上自动读取它
我选择编写自己的基本解析器,这对于我所需的工作已经足够好了。

1
你也在寻找同样的东西吗?你介意分享一下你脚本的链接吗? - kthouz
1
@kthouz,抱歉我所拥有的内容非常具体,仅适用于我的特定需求,我无法分享它。 - xorsyst
@xorsyst,你能分享一下你获取这些信息的来源吗?如何将.dump文件解析成可读的文件? - Deniz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接