【发布时间】:2017-09-08 23:36:21
【问题描述】:
我在 postgresql 中有一个名为 mytable 的表,我需要将该表的内容从 python 应用程序打印到标准输出。
我目前正在做以下事情:
conn = psycopg2.connect("dbname=postgres user=postgres password=psswd")
cur = conn.cursor()
cur.copy_to(sys.stdout,'mytable',sep = '\t')
但是,当它打印在某些列之间时,我会得到一些“\N”。我相信发生这种情况的原因是因为在打印过程中的某个地方,该行超出并转到 psql 终端中的下一行,因此这些 \N 出现了。
输出:
E0307 1 M 400 Ethan UTDallas 12.98580404 \N 50.79403657 1
E0307 1 M 400 Lucas Baylor 15.18511175 \N 56.87285183 3
E0307 1 M 400 Jackson Baylor 13.64228411 \N 56.87285183 3
E0307 1 M 400 Jacob Baylor 13.19878974 \N 56.87285183 3
E0307 1 M 400 Samuel Baylor 14.84666623 \N 56.87285183 3
我的问题如下:
如何在输出中去掉这些 \N?有没有另一种打印表格的方法?我试图避免必须执行整个“SELECT * FROM my_table”查询的方式。只使用要打印的表名的东西。
-
另外,打印时如何获取表头?我尝试了以下方法:
cur.execute("COPY mytable TO STDOUT with csv header")
我收到此错误消息:
ProgrammingError: can't execute COPY TO: use the copy_to() method instead
另外,我不确定这是否是最好的方法。但是我试图做的事情:)
【问题讨论】:
标签: python postgresql etl psycopg2