PostgreSQL:将数据库导出为.sql文件

80
我想将我的数据库导出为一个.sql文件。 有人可以帮我吗?我找到的解决方案都不起作用。 请提供详细的说明。 在Windows 7上。

PostgreSQL 运行在哪些操作系统上? - Vao Tsun
Windows 7 是操作系统。 - moxmlb
https://www.postgresql.org/docs/current/static/backup-dump.html - user330315
6个回答

121

pg_dump默认导出纯SQL格式的数据和结构。

打开命令提示符,运行 pg_dump -U 用户名 -h localhost 数据库名 >> sql文件名.sql

以上命令是首选,因为大多数情况下会出现错误,类似于- ...FATAL: Peer authentication failed for user...


1
你用什么操作系统?Windows?OSX?Linux?BSD? - Vao Tsun
在Windows 7和Postgres 1.22.1上。 - moxmlb
这只是转储结构。如果我也需要数据怎么办? - bhattraideb
1
请注意,您将在CLI上运行此命令而不使用“psql”命令登录。您还可以像这样添加端口号:pg_dump -U用户名 -h localhost -p 5433 dbName >> dumpFile.sql使用上述命令将在您的“home”文件夹中创建文件,但您可以指定所需的位置。 - Wachaga Mwaura
嗨,你将这个PostgreSQL数据库导出为.sql文件。有没有办法在Python中打开这个导出的.sql文件? - undefined
显示剩余2条评论

19
在Windows操作系统中,首先确保已将路径添加到环境变量PATH中:C:\Program Files\PostgreSQL\12\bin。成功添加路径后,重新启动cmd并输入以下命令:pg_dump -U 用户名 -p 端口号 -d 数据库名 -W -f 文件位置。此命令可以导出模式和数据。如果只需要导出模式,请使用-s替代-W;如果只需要导出数据,请使用-a。请根据您的情况替换每个变量,例如用户名、端口号、数据库名和文件位置。所有内容均区分大小写,请确保正确输入。如需导入,请使用以下命令: psql -h 主机名 -p 端口号 -U 用户名 -f 您的文件.sql 数据库名。请确保数据库已创建或者在.sql文件中存在创建查询语句。有关详细信息,请参考文档:https://www.postgresql.org/docs/current/app-pgdump.html

嗨,你把这个PostgreSQL数据库导出为.sql文件。有没有办法在Python中打开这个导出的.sql文件? - undefined

6

打开命令行并运行

pg_dump -U userName -h localhost -d databaseName > ~/Desktop/cmsdump.sql

1
这在Ubuntu 22.04上运行正常。 - Sohail Sajid
嗨,你将这个PostgreSQL数据库导出为.sql文件。有没有办法在Python中打开这个导出的.sql文件? - undefined

0
如果你使用的是Windows系统,打开命令提示符(cmd)并运行以下命令,根据实际情况修改用户和数据库的详细信息。
pg_dump -U postgres -h localhost -d statepos > C:\Users\ston\Desktop\statepos.sql

嗨,你把这个PostgreSQL数据库导出成.sql文件了。有没有办法在Python中打开这个导出的.sql文件呢? - undefined

0
例如,您可以使用例如-Fc-Ft--format=c--format t将用户(角色)johnapple数据库的模式和数据导出并存档到backup.sql中,如下所示。如果backup.sql不存在,则会创建它,我的答案解释了如何导出模式和数据,我的答案解释了如何导入存档backup.sqlorange数据库,文档解释了如何导出和导入数据库。
pg_dump -U john -Fc apple > backup.sql

或者:

pg_dump -U john -Ft -d apple > backup.sql

或者:

pg_dump --username=john --format=c --dbname=apple > backup.sql

或者:

pg_dump --username john --format t --dbname apple > backup.sql
  • c 表示自定义,它输出一个适用于pg_restore导入的自定义格式存档文件。*必须使用pg_restore来导入该文件。

  • t 表示tar,它输出一个适用于pg_restore导入的tar格式存档文件。*必须使用pg_restore来导入该文件。

  • d 表示目录,它输出一个适用于pg_restore导入的目录格式存档文件。*必须使用pg_restore来导入该文件,但是它无法正常工作,会出现错误。

  • p 表示纯文本,它输出一个纯文本SQL脚本文件(默认格式)。*必须使用psql来导入该文件。

*pg_restore 是用于导入使用 ctd 创建的归档文件,而 psql 是用于导入使用 p(默认)创建的非归档文件,文档中有更详细的解释:

然后,在运行上述命令后,您需要输入密码:

Password:

此外,您可以通过将密码(例如banana)设置为PGPASSWORD,将用户(角色)johnapple数据库的模式和数据导出并存档到backup.sql,而无需输入密码。具体操作如下所示:
PGPASSWORD=banana pg_dump -U john -Fc apple > backup.sql

而且,您可以按照下面的方式将用户(角色)johnapple数据库的模式导出并存档到backup.sql文件中:
pg_dump -U john -s -Fc apple > backup.sql

或者:

pg_dump -U john --schema-only -Fc apple > backup.sql

或者,您可以仅导出和归档特定表格 apple 数据库中用户(角色)john 的数据到 backup.sql,仅包含以下所示的列名的 INSERT 语句。
pg_dump -U john -Fc -a --column-inserts -t person -t animal apple > backup.sql

然后,在运行上述命令后,您需要输入密码。
Password:

0
例如,您可以按照下面的示例将用户(角色)johnapple数据库的模式和数据导出到backup.sql。如果backup.sql不存在,它将被创建,您还可以使用-Fp(在我的回答中有解释)来导出和归档数据库,-Fc-Ft(在我的回答中有解释)来导出和导入所有数据库,以及我的回答中有解释如何将backup.sql导入到orange数据库,文档中有解释如何导出和导入数据库。
pg_dump -U john apple > backup.sql

或者:

pg_dump -U john -d apple > backup.sql

或者:

pg_dump --username=john --dbname=apple > backup.sql

或者:

pg_dump --username john --dbname apple > backup.sql

或者:

pg_dump -U john -f backup.sql apple

或者:

pg_dump -U john -d apple -f backup.sql

或者:

pg_dump --username=john --file=backup.sql apple

或者:

pg_dump --username john --file backup.sql apple

或者:

pg_dump --username=john --dbname=apple --file=backup.sql

或者:

pg_dump --username john --dbname apple --file backup.sql

然后,在运行上述命令后,您需要输入密码。
Password:

此外,您可以通过将密码(例如banana)设置为PGPASSWORD,将用户(角色)johnapple数据库的模式和数据导出到backup.sql,而无需密码提示,如下所示:
PGPASSWORD=banana pg_dump -U john apple > backup.sql

而且,您可以按照下面的示例,仅将用户(角色)johnapple数据库模式导出到backup.sql文件中,使用-s--schema-only选项:
pg_dump -U john -s apple > backup.sql

或者:

pg_dump -U john --schema-only apple > backup.sql

或者,您可以仅导出用户(角色)johnapple数据库中特定表personanimal的数据到backup.sql,只包含以下所示的INSERT语句的列名。*在一个命令中可以指定多个表,我的答案解释了如何仅导出数据。
pg_dump -U john -a --column-inserts -t person -t animal apple > backup.sql

然后,在运行上述命令后,您需要输入密码:
Password:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接