web-dev-qa-db-ja.com

postgresのcsvにテーブルをエクスポート

スーパーユーザーではなく、copyコマンドを使用できない場合、Postgresの.csvにテーブルをエクスポートするにはどうすればよいですか?

右クリックの「インポート」ボタンでデータをpostgresにインポートできますが、エクスポートオプションはありません。

14
Luba Weissmann

Psqlを使用してストリームをファイルにリダイレクトします。

psql -U <USER> -d <DB_NAME> -c "COPY <YOUR_TABLE> TO stdout DELIMITER ',' CSV HEADER;" > file.csv
34
marvinorez
COPY your_table TO '/path/to/your/file.csv' DELIMITER ',' CSV HEADER;

詳細はこちら manual

3

Marvinorezの提案に加えて 彼の答えpsqlから実行できます:

\copy your_table TO '/path/to/your/file.csv' DELIMITER ',' CSV HEADER

一方、pgadmin3からは、テーブルの名前を右クリックして[データの表示]を選択してテーブルを開くこともできます。次に、テーブルの左上隅(列名の行と行番号の列、灰色の空の四角)をクリックして、すべての行を選択できます。最後に、あなたは CtrlC またはメニューの編集->コピー。データは、セミコロン;で区切られたcsv形式でクリップボードにコピーされます。次に、それをLibreOffice Calc、MS Excelに貼り付けて、たとえば表示できます。

テーブルが大きい場合(何が大きいかは、RAMなど)に依存します)クリップボードに収まらない可能性があるため、その場合は使用しませんメソッドですが、最初のメソッド(\ copy)です。

2
user2553863

スーパーユーザーとpsqlの実行で問題が発生しました。PGAdminIIIを使用して、単純な愚かな方法を採用しました。
1)SELECT * FROM;
メニューバーでクエリの選択を実行する前に、[ファイルにクエリ]を選択します。これにより、選択したフォルダにクエリが保存されます。エクスポート方法の設定をいじる必要があるかもしれません。引用や;が好きです。

2)SELECT * FROM;
通常どおり実行し、[ファイル]メニューの[エクスポート]を選択して出力を保存します。これは.csvとして保存されます

これは大きなテーブルには適したアプローチではありません。私がこれを行ったテーブルは、数100,000行と10〜30列です。大きなテーブルには問題がある可能性があります。

0
Jesse

最も簡単な方法は、確かに私が考える標準出力へのコピーです。これができない場合は、pg_dumpを使用してから、sed、AWK、またはテキストエディターで出力ファイルを変換してみませんか?これは、許容可能な時間内に検索と置換を行っても機能するはずです:)

0
Draugr