如何将查询到的CSV文件保存在PeckCopg2中

How to save CSV file from query in psycopg2(如何将查询到的CSV文件保存在PeckCopg2中)
本文介绍了如何将查询到的CSV文件保存在PeckCopg2中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试在本地.csv中保存使用python对PostgreSQL数据库执行的查询的结果(使用心理拷贝g2)。

我可以在控制台中打印查询结果,但无法将其导出为CSV文件。

我已尝试使用COPY_TO函数,但即使使用documentation我也无法理解:

    # Retrieve the records from the database with query
    cursor.execute("SELECT col1 FROM myDB.myTable WHERE col1 > 2")
    records = cursor.fetchall()

    # Save to csv with copy_to
    io = open('copy_to.csv', 'w')
    cursor.copy_to(io, 'records', ',')
    print("Copied records from query into file object using sep = ,")
    io.close()

这会导致错误"ological Copg2.ProgrammingError:Relationship"Record"is"。

是否有更好的方法将查询结果存储在可以传递给Copy_to的本地表中?谢谢你的建议!

推荐答案

我做了更多的研究,这里有另一个可能更有效的解决方案:

``` python
import psycopg2

#note the lack of trailing semi-colon in the query string, as per the Postgres documentation
s = "'SELECT col1 FROM myDB.myTable WHERE col1 > 2'"

conn = psycopg2.connect...
db_cursor = conn.cursor()

SQL_for_file_output = "COPY ({0}) TO STDOUT WITH CSV HEADER".format(s)

WITH Open(filepath/name, 'w') as f_output:
    cur.copy_expert(SQL_for_file_output, f_output)

conn.close()
```

这篇关于如何将查询到的CSV文件保存在PeckCopg2中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)