PostgreSQL のクエリから得られたデータを Excel/CSV にエクスポートする必要があります。
私は使用しますPostgreSQL 8.2.11
。
SQL error:
ERROR: relative path not allowed for COPY to file
In statement:
COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"';
PostgreSQL のクエリから得られたデータを Excel/CSV にエクスポートする必要があります。
私は使用しますPostgreSQL 8.2.11
。
SQL error:
ERROR: relative path not allowed for COPY to file
In statement:
COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"';
Unixスタイルのファイル名の例:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
についてのマニュアルCOPY
を読んでください(バージョン8.2へのリンク)。ターゲットファイルには絶対パス
を使用する必要があります。ファイル名は必ずスペースで二重引用符で囲んでください。MS Windowsの例:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
PostgreSQL 8.2では、standard_conforming_strings = off
デフォルトでバックスラッシュを2倍にする必要があります。これ\
は、特殊文字であり、PostgreSQLによって解釈されるためです。どのバージョンでも動作します。それはすべて素晴らしいマニュアルにあります:
ファイル名
入力ファイルまたは出力ファイルの絶対パス名。Windowsユーザーは
E''
、パス区切り文字として使用される文字列と二重円記号を使用する必要がある場合があります。
または、最新の構文standard_conforming_strings = on
(Postgres 9.1以降のデフォルト):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
または、Windowsでファイル名にスラッシュを使用することもできます。
別の方法は、デフォルトのターミナルクライアントのメタコマンド\copy
psql
を使用することです。
pgadminのようなGUIを使用して、小さなクエリの結果グリッドからExcelにコピー/貼り付けすることもできます。
密接に関連する答え:
MySQLの同様のソリューション:
PostgreSQL 9.4では、 Ubuntuのヘッダーを使用して CSV をファイルに作成します。
COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER;
注: フォルダーは書き込み可能である必要があります。
これは私のために働いた:
COPY (SELECT * FROM table)
TO E'C:\\Program Files (x86)\\PostgreSQL\\8.4\\data\\try.csv';
私の場合、問題は特別なフォルダーへの書き込み許可にありました(私は管理者として働いていますが)、PostgreSQLの下の元のデータフォルダーへのパスを変更した後、成功しました。
「エラー: サーバー ファイル "/file" を開けませんでした: 権限が拒否されました」のようなエラーが発生した場合は、次のように修正できます。
/home の下に新しいフォルダー (tmp など) を作成します $ cd /home で postgres をそのフォルダーの所有者にします $ chown -R postgres:postgresデータベースに書き込みたいファイルを作成し、それらが postgres によって所有されていることも確認してください。それでおしまい。その後、あなたはビジネスをしているはずです。
Squirrel、SQL Workbench/J、AnySQL、ExecuteQuery などのいくつかの GUI ツールは、Excel ファイルにエクスポートできます。
これらのツールのほとんどは、PostgreSQL wiki にリストされています。
http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools
postgres (Ubuntu) の正しいスクリプトは次のとおりです。
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';