通过psycopg2运行copy
命令时出现错误
psycopg2.ProgrammingError: could not open file "/tmp/<>.txt" for writing: Permission denied
我不知道问题的病因,但过去我能够在没有这个问题的情况下运行复制命令。与this question的答案不同,将输出位置更改为主文件夹不会更改结果。我尝试使用/tmp
重置chmod -R 777 /tmp
权限,但没有成功。使用sudo权限运行脚本也不起作用。接下来我应该尝试解决此问题?
该程序的代码示例是:
import psycopg2 as post
con = post.connect(<dbname>, <host>, <user>, <password>)
cur = con.cursor()
with open('/tmp/out_path.txt', 'w') as f:
cur.copy_expert("COPY <table> TO '/tmp/out_path.txt' WITH CSV HEADER" +
"DELIMITER AS E'\t'", f)
# close connections, etc
我在Ubuntu 12.04服务器上,PostgreSQL 9.3,Python 2.7。客户端和主机都在同一台机器上 - 我在通过ssh登录时运行脚本。
答案 0 :(得分:2)
with open('/tmp/out_path.txt', 'w') as f:
cur.copy_expert("""
COPY <table> TO STDOUT WITH CSV HEADER DELIMITER AS E'\t'
""", f)
sql语句应该以COPY表TO STDOUT的形式将表导出到作为参数传递的文件对象