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

时间:2018-04-02 12:00:49

标签: python sql postgresql export-to-csv psycopg2

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

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

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

<ng-template ngbTabContent> {{item}}</ng-template>

有谁知道什么是错的或给我一个提示?

3 个答案:

答案 0 :(得分:6)

\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)

答案 1 :(得分:1)

\COPYpsql command(基于客户端),因此是有效的SQL命令。只需使用COPY(不使用反斜杠\)即可尝试相同的操作。

如果您想直接在客户端输出文件,您可能想要使用COPY的{​​{3}},否则它将在数据库服务器上创建,这是一个奢侈< / em>不是每个人都有。

答案 2 :(得分:0)

是的,所有与 \COPY 相关的语句都是正确的,作为 SQL 命令。 如果您想尝试与问题中所述相同的方法,则可以将其作为 python 脚本中的 shell 命令进行尝试。

例如:

import os
      
cmd1 = " Your SQL to csv Command"           
os.system(cmd1)