我使用的是64位windows 7.

我的 playbook 是:

import psycopg2
conn = psycopg2.connect("host='localhost' port='5432' dbname='Ekodev' user='bn_openerp' password='fa05844d'")
cur = conn.cursor()
cur.execute("""truncate table "meta".temp_unicommerce_status;""")
cur.execute("""Copy temp_unicommerce_status from 'C:\Users\n\Desktop\data.csv';""")
conn.commit()
conn.close()

我犯了这个错误

Traceback (most recent call last):
  File "C:\Users\n\Documents\NetBeansProjects\Unicommerce_Status_Update\src\unicommerce_status_update.py", line 5, in <module>
cur.execute("""Copy temp_unicommerce_status from     'C:\\Users\\n\\Desktop\\data.csv';""")
psycopg2.ProgrammingError: must be superuser to COPY to or from a file
HINT:  Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

推荐答案

使用copy_from cursor method

f = open(r'C:\Users\n\Desktop\data.csv', 'r')
cur.copy_from(f, temp_unicommerce_status, sep=',')
f.close()

文件必须作为对象传递.

由于您是从csv文件进行处理,因此有必要指定分隔符,因为默认分隔符是制表符

Postgresql相关问答推荐

在输入稍有错误的PostgreSQL表中进行快速字符串搜索

Psql:Windows 10上奇怪的错误输出编码

SQLX::Query!带有UUID::UUID的宏在Rust中编译失败

在Postgre中的链接服务器上执行远程查询

在Postgres游标中从一行变量中减go 另一行变量

求和直到达到一个值 postgresql

返回行值和行计数的总和

需要用 jack/pgx 更新 golang 中复合类型的 PSQL 行

在 postgresql 数据库 timestampz 中保留用户偏移量

AWS RDS 公开访问

PostgreSQL 在 mySQL 中的 date_trunc

在 CentOS 上安装 psycopg2 时遇到问题

使用 postgres regexp_replace 将字符串列表替换为始终相同的字符串

PostgreSQL:将时间戳转换为时间 - 或仅从时间戳列中检索时间

如何在 postgres json 列中查询嵌套数组?

Postgres 日期重叠约束

仅在存在时重命名列

大型查询后 psycopg2 泄漏内存

如何在 postgresql 交叉表中用零替换空值

如何在 postgresql 中获取整个表的哈希?