【发布时间】:2017-01-12 15:10:45
【问题描述】:
我正在尝试运行这样的代码:
query = "copy (select email from my_table) TO 'STDOUT' WITH (FORMAT csv, DELIMITER '|', QUOTE '^', HEADER FALSE)"
out_file = StringIO()
cursor.copy_expert(query, out_file, size=8192)
但是我收到了这个错误:
Traceback (most recent call last):
File "etl/scripts/scratch.py", line 32, in <module>
cursor.copy_expert(query, out_file, size=8192)
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.
我无法以超级用户身份运行它,而且似乎不需要这样做,因为我没有接触任何真实文件。
【问题讨论】:
-
如果我没记错的话,StringIO 有点像内存文件。 psycopg2 似乎不支持这一点。为什么需要这个 StringIO?
-
我想在内存中做所有事情。所有文档都说需要“将数据写入文件的类对象。它必须有一个 write() 方法。”
标签: python postgresql psycopg2 psycopg