python - 不使用 pg_dump 从 PostgreSQL 数据库中提取数据

标签 python sql xml postgresql

有一个 PostgreSQL 数据库,我只能有限地访问它(例如,我不能使用 pg_dump)。我试图通过从数据库中导出某些 表来创建一个本地“镜像”。我没有从 psql 中将表转储为 SQL 所需的权限。现在,我只有一个 Python 脚本,它遍历我的 table_names,选择所有字段,然后将它们导出为 CSV:

for table_name, file_name in zip(table_names, file_names):
    cmd = """echo "\\\copy (select * from %s)" to stdout WITH CSV HEADER | psql -d remote_db | gzip > ./%s/%s.gz"""%(table_name,dir_name,file_name)
    os.system(cmd)

如果可能,我不想使用 CSV,因为我丢失了字段类型并且编码可能会弄乱。首先最好的可能是使用\copy 获取表的生成 SQL 代码的某种方法。其次最好的是 XML,最好使用某种方式来保留字段类型。如果这不起作用,我认为最终的选择可能是两个查询——一个获取字段数据类型,另一个获取实际数据。

任何想法或建议将不胜感激 - 谢谢!

最佳答案

让我有点困惑的是 “我没有从 psql 中将表转储为 SQL 所需的权限。” pg_dump独立运行,外部 psql (两者都是客户端)并且如果您有权连接到数据库并选择一个表,我猜您也可以使用 pg_dump -t <table> 转储它.我错过了什么吗?

关于python - 不使用 pg_dump 从 PostgreSQL 数据库中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770792/

相关文章:

python - cherrypy 是如何工作的?当并发率低时,与 Tornado 相比,它可以很好地处理请求

python - Py2exe 错误 : Namespace packages not yet supported : Skipping package 'snowflake'

java - 将根元素添加到java中的xml文档

php - 使用 PHP 解析带有命名空间的 SOAP XML 响应

mysql - SQL查询突然显示重复结果

xml - 如何从 googleapi Youtube API 获取 XML 响应

python - 在python中查找两个列表的共现

python - 用python解析xml中的CDATA

MySQL如何计算一个整数适合另一个数字的次数以及剩下的内容

mysql - 输出组与条件语句连接