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 '...
誰かが間違っている可能性があることを知っていますか、それとも私にヒントを与えますか?
_\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)
_
_\COPY
_は psqlコマンド (クライアントベース)であるため、not有効なSQLコマンド。 COPY
を使用して同じことを試してください(バックスラッシュなし_\
_)。
クライアントで直接出力ファイルが必要な場合は、 [〜#〜] stdout [〜#〜] of COPY
、それ以外の場合は、データベースサーバーで作成されます。これは、luxuryです。