我正在尝试备份postgresql的数据库,我想使用pg_dump
命令。
我试过了 :
psql -U postgres
postgres-# pg_dump test > backup.sql
但我不知道输出文件的位置。 任何帮助将不胜感激
转到命令提示符和目录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
文件
在我的情况下(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版本是否属实。根据the answer post by the asker of this question的说法,这是事实,但其他用户表示备份文件位于当前目录中(由于显而易见的原因,大多数人阅读此主题的情况不同)。好吧,我希望这可以帮助其他用户遇到同样的问题。
P.s。:如果这不是你的情况的路径,你可以尝试(在Linux中)使用下面的命令找到它(如@Bohemian在这个问题的评论中所述),但这可能需要一段时间:
find / -name 'my_database.sql'
编辑:我试图在Ubuntu 12.04中运行类似的命令(它适用于Ubuntu 18.04):
sudo -u postgres pg_dump my_database > my_database.sql
在这种情况下,文件保存在我运行命令的当前目录中!因此,这两种情况都可能发生在Linux中,具体取决于您正在使用的具体设备
我参加这个派对已经迟到了,但我觉得答案都不正确。大多数人似乎暗示pg_dump
在某处写了一个文件。它没有。您正在将输出发送到文件,并告诉shell在哪里写入该文件。
在您的示例pg_dump test > backup.sql
中,使用plain
或SQL格式,pg_dump
命令不会在任何地方存储任何文件。它只是将输出发送到STDOUT
,这通常是你的屏幕,它就完成了。
但是在你的命令中,你还告诉你的shell(终端,命令提示符等等)将STDOUT重定向到一个文件。这与pg_dump
无关,但是像Bash或cmd.exe这样的shell的标准功能。
您使用>
将STDOUT重定向到文件而不是屏幕。你给了文件名:“backup.sql”。由于您未指定任何路径,因此该文件将位于当前目录中。这可能是你的主目录,除非你已经在其他目录中完成了cd ...
。
在pg_dump
的特殊情况下,您还可以使用> /path/to/some_file
替换-f some_file
option shell重定向:
-f文件 --file =文件
将输出发送到指定的文件。对于基于文件的输出格式,可以省略此参数,在这种情况下使用标准输出。
所以你的命令可能是pg_dump test -f backup.sql
,要求pg_dump直接写入该文件。
但无论如何,您都要给出文件名,如果没有指定路径,则会在当前目录中创建该文件。如果您的提示尚未显示当前目录,则可以在Unix上使用pwd
命令和Windows中的cd
显示该提示。
如果您没有指定完全限定的路径,例如:
pg_dump your_db_name > dbdump
然后在Windows中它将转储存储在当前用户的主目录中。即:
C:\Users\username
在Linux中,默认路径是:
的/ var / lib中/ PostgreSQL的/
在pgadmin 4 for Mac中,假设转储成功,您可以单击“更多详细信息”,您将看到一个显示“运行命令:”的框,您将在该框中看到/ Applications / pgAdmin 4.app/Contents/SharedSupport/pg_dump --file“path / to / file”其中path的路径是存储的目的地。