当前位置: 首页 > 面试题库 >

使用Python将PostgreSQL查询导出到csv文件

曹高轩
2023-03-14
问题内容

我需要使用Python脚本将PostgreSQL数据库中的表中的某些行导出到.csv文件:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys, psycopg2

...

    conn = psycopg2.connect("dbname=dbname user=user password=password")
    cur = conn.cursor()

    sql = "\copy (SELECT * FROM table WHERE month=6) TO '/mnt/results/month/table.csv' WITH CSV DELIMITER ';';"
    cur.execute(sql)
    cur.close()

...

但是当我运行脚本时,我得到了:

Syntax error at or near «\»
LINE 1: \copy (SELECT * FROM TABLE WHERE month=6) TO '...

有谁知道可能出什么问题或给我小费吗?


问题答案:

\copy命令不是SQL命令,它是Postgres终端客户端 psql 专用的命令,不能在此上下文中使用。

使用copy_expert(sql, file, size=8192)代替,例如:

sql = "COPY (SELECT * FROM a_table WHERE month=6) TO STDOUT WITH CSV DELIMITER ';'"
with open("/mnt/results/month/table.csv", "w") as file:
    cur.copy_expert(sql, file)


 类似资料:
  • 问题内容: 我调试了存储过程(SQL Server 2005),需要在数据表中找出一些值。 该过程由应用程序的事件运行,而我仅观察调试输出。 我执行以下存储过程(SQL Server 2005),以系统表(master.dbo.spt_values)为例: 因此,当我取消注释第二行(如一切正常)时,文件在C:\驱动器上分配……但是如果我将其注释为仅剩下第一行,则将生成任何输出。 如何解决这个问题?

  • 问题内容: 我试图将使用以下查询找到的结果导出到我的桌面上的CSV中。 这是我第一次使用Elasticsearch和cURL,因此我对如何执行此操作感到困惑。 现在,当我运行此查询时,它将返回戴夫的姓名,姓氏,地址和性别,并且我想在运行查询时将结果放入桌面上的csv中。 我一直在阅读有关如何执行此链接的操作,但是我不确定如何使我的查询执行此操作-(https://docs.python.org/3

  • 我想从云桶中读取一个csv文件,并使用Java中的dataflow将其写入一个带有列的bigquery表。如何在写入BigQuery时将标题设置为csv文件?

  • 问题内容: 我想通过单击表单中的按钮将查询结果导出到excel文件。 为此,我使用了这段代码,并且效果很好: 但是我的查询使用了两个参数 sdate 和 edate ,我不想访问询问我这些值,但是我希望用户在带有适当文本框的表单中输入它们。 所以我在DoCMD.OutputTo之前的代码中添加了此位 但不幸的是,它不起作用。在导出之前如何将参数放入查询中? 问题答案: 如果您想保持原始参数查询的完

  • 哪种方法是以CSV格式导出JPA查询结果的最佳方法?我试过opencsv,但它需要一个java.sql.ResultSet对象,我不明白如何创建它。我尝试了以下代码 但我收到异常java.lang.ClassCastException:java.util.Vector不能强制转换为java.sql.ResultSet

  • 问题内容: 将PL / pgSQL输出从PostgreSQL数据库保存到CSV文件的最简单方法是什么? 我正在将PostgreSQL 8.4与pgAdmin III和PSQL插件一起使用,从中运行查询。 问题答案: 您要在服务器上还是在客户端上生成结果文件? 如果您想要一些易于重用或自动化的东西,可以使用Postgresql的内置COPY命令。例如 这种方法完全在远程服务器上运行 -无法写入本地P