26

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"';
4

6 に答える 6

39

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でファイル名にスラッシュを使用することもできます。

別の方法は、デフォルトのターミナルクライアントのメタコマンド\copypsqlを使用することです。

pgadminのようなGUIを使用して、小さなクエリの結果グリッドからExcelにコピー/貼り付けすることもできます。

密接に関連する答え:

MySQLの同様のソリューション:

于 2011-11-14T09:11:58.587 に答える
8

PostgreSQL 9.4では、 Ubuntuのヘッダーを使用して CSV をファイルに作成します。

COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER;

注: フォルダーは書き込み可能である必要があります。

于 2015-08-19T17:09:20.030 に答える
4

これは私のために働いた:

COPY (SELECT * FROM table) 
    TO E'C:\\Program Files (x86)\\PostgreSQL\\8.4\\data\\try.csv';

私の場合、問題は特別なフォルダーへの書き込み許可にありました(私は管理者として働いていますが)、PostgreSQLの下の元のデータフォルダーへのパスを変更した後、成功しました。

于 2013-01-16T16:06:14.160 に答える
2

「エラー: サーバー ファイル "/file" を開けませんでした: 権限が拒否されました」のようなエラーが発生した場合は、次のように修正できます。

/home の下に新しいフォルダー (tmp など) を作成します $ cd /home で postgres をそのフォルダーの所有者にします $ chown -R postgres:postgresデータベースに書き込みたいファイルを作成し、それらが postgres によって所有されていることも確認してください。それでおしまい。その後、あなたはビジネスをしているはずです。

于 2014-09-04T08:20:25.547 に答える
2

Squirrel、SQL Workbench/J、AnySQL、ExecuteQuery などのいくつかの GUI ツールは、Excel ファイルにエクスポートできます。

これらのツールのほとんどは、PostgreSQL wiki にリストされています。

http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools

于 2011-11-14T13:20:14.073 に答える
0

postgres (Ubuntu) の正しいスクリプトは次のとおりです。

COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';
于 2014-09-04T08:17:06.370 に答える