我需要使用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 '...
有人知道什么地方可能出了问题或者给予我一个提示吗?
4条答案
按热度按时间jc3wubiy1#
\copy
不是SQL命令,它是特定于Postgres终端客户端psql的命令,不能在此上下文中使用。使用
copy_expert(sql, file, size=8192)
代替,例如:阅读文档中有关函数的详细信息。
xzv2uavs2#
\COPY
是psql command(基于客户端),因此不是有效的SQL命令。使用COPY
(不带反斜杠\
)尝试相同的操作。如果您希望输出文件直接在客户机上,您可能希望使用
COPY
的STDOUT,否则它将在数据库服务器上创建,这不是每个人都拥有的 * 奢侈品 *。wgxvkvu93#
是的,所有与
\COPY
相关的语句都是正确的。如果你想尝试与问题中所述相同的语句,那么你可以尝试将其作为Python脚本中的shell命令。例如:
bq3bfh9z4#
可以使用以下语法: