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 '...
何が問題なのか知っている人や、ヒントを教えてくれる人はいませんか?
ベストアンサー1
これは\copy
SQLコマンドではなく、Postgresターミナルクライアントに固有のコマンドです。psqlこの文脈では使用できません。
代わりに以下を使用しますcopy_expert(sql, file, size=8192)
。例:
sql = "COPY (SELECT * FROM a_table WHERE month=6) TO STDOUT WITH CSV DELIMITER ';'"
with open("/mnt/results/month/table.csv", "w") as file:
cur.copy_expert(sql, file)
機能の詳細を読むドキュメントに記載されています。