Pythonを使用してPostgreSQLクエリをcsvファイルにエクスポートする 質問する

Pythonを使用してPostgreSQLクエリをcsvファイルにエクスポートする 質問する

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

これは\copySQLコマンドではなく、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)

機能の詳細を読むドキュメントに記載されています。

おすすめ記事