web-dev-qa-db-ja.com

pg_dumpの出力はどこに行きますか

Postgresqlのデータベースをバックアップしようとしていますが、pg_dumpコマンド。
私は試した :

psql -U postgres
postgres-# pg_dump test > backup.sql

しかし、出力ファイルの場所はわかりません。
ご協力いただければ幸いです

24
Dariush Jafari

コマンドプロンプトとディレクトリpostgresql\9.3\binに移動します。

..
    c:\Program files\postgresql\9.3\bin> pg_dump -h localhost -p 5432 -U postgres test > D:\backup.sql
...

上記のコマンドの後、ユーザー「postgres」パスワードを入力し、D:\ドライブのbackup.sqlファイルを確認します

14
Meem

私の状況(PostgreSQL 9.1.21、Centos 6.7)では、コマンド

runuser -l postgres -c 'pg_dump my_database > my_database.sql'

ここにファイルを保存しました:

/var/lib/pgsql/my_database.sql

他のLinux dists、CentOS、および/またはpglバージョンに当てはまるかどうかはわかりません。 この質問の質問者による回答投稿 によると、これは本当ですが、他のユーザーはバックアップファイルが現在のディレクトリにあると言いました(明らかな理由でこのスレッドを読んでいるほとんどの人とは異なる状況) 。まあ、これが同じ問題を抱えている他のユーザーに役立つことを願っています。

追記:それがあなたの状況への道ではない場合、以下のコマンド(この質問のコメントで@Bohemianによって述べられているように)を使用して(Linuxで)それを見つけることができますが、これには時間がかかることがあります:

find / -name 'my_database.sql'

EDIT:Ubuntu 12.04で類似のコマンドを実行しようとしました(Ubuntu 18.04で動作します):

Sudo -u postgres pg_dump my_database > my_database.sql

この場合、ファイルはコマンドを実行した現在のディレクトリに保存されました!そのため、作業している特定のdistに応じて、Linuxで両方のケースが発生する可能性があります

8
Brian Hellekin

私はこのパーティーに遅れていますが、答えはどれも本当に正しいとは思いません。ほとんどは、pg_dumpがファイルをどこかに書き込むことを暗示しているようです。そうではありません。 Youはファイルに出力を送信しており、youはシェルにそのファイルの書き込み先を指示しました。

plainまたはSQL形式を使用するpg_dump test > backup.sqlの例では、pg_dumpコマンド保存しない任意の場所のファイル。通常は画面であるSTDOUTに出力を送信するだけで、完了です。

ただし、コマンドでは、シェル(ターミナル、コマンドプロンプトなど)にSTDOUTをファイルにリダイレクトするように指示しました。これはpg_dumpとは関係ありませんが、Bashやcmd.exeなどのシェルの標準機能です。

>を使用して、STDOUTを画面ではなくファイルにリダイレクトしました。そして、ファイル名を「backup.sql」と指定しました。パスを指定しなかったため、ファイルは現在のディレクトリにあります。他のディレクトリにcd ...を実行していない限り、これはおそらくあなたのホームディレクトリです。

pg_dumpの特定のケースでは、 > /path/to/some_fileオプション を使用して、-f some_fileシェルリダイレクトの代替を使用することもできます。

-fファイル
-file = file

指定されたファイルに出力を送信します。このパラメーターは、ファイルベースの出力形式では省略できます。この場合、標準出力が使用されます。

したがって、コマンドはpg_dump test -f backup.sqlであり、pg_dumpにそのファイルに直接書き込むように要求できます。

ただし、いずれにしてもファイル名を指定します。パスを指定しない場合、ファイルは現在のディレクトリに作成されます。プロンプトに現在のディレクトリが表示されていない場合は、Unixではpwdコマンドで、Windowsではcdコマンドで表示できます。

7
mivk

次のような完全修飾パスを指定していない場合:

pg_dump your_db_name > dbdump

次にWindowsで、現在のユーザーのホームディレクトリにダンプを保存します。つまり:

C:\Users\username

2
WelcomeTo

Linuxのデフォルトパスは次のとおりです。

/ var/lib/postgresql /

1
IvanM

Macのpgadmin 4では、ダンプが成功すると「詳細」をクリックすると、「コマンドの実行」というボックスが表示されます。そのボックスには/ Applications/pgAdmin 4.app/Contents/SharedSupport/pg_dumpが表示されます--file "path/to/file" fileへのパスはストレージの宛先です。

0
faisal12