使用 pg_dump 仅从数据库中的一张表获取插入语句
我正在寻找一种方法,使用 PostgreSQL 中的 pg_dump
从数据库中的一个特定表中获取所有行作为 INSERT
语句。
例如,我有表 A,表 AI 中的所有行都需要作为 INSERT 语句,它还应该将这些语句转储到文件中。
这可能吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果版本< 8.4.0
如果您只需要 INSERT,而不需要 CREATE TABLE 等来首先设置表,请在
-t
之前添加-a
。版本 >= 8.4.0
if version < 8.4.0
Add
-a
before the-t
if you only want the INSERTs, without the CREATE TABLE etc to set up the table in the first place.version >= 8.4.0
如果您想将插入内容转储到 .sql 文件中:
cd
到您希望.sql
文件所在的位置pg_dump --column-inserts --data-only --table=; <数据库> > my_dump.sql
请注意,
> my_dump.sql
此命令的一部分会将所有内容放入名为 my_dump 的 .sql 文件中If you want to DUMP your inserts into an .sql file:
cd
to the location where you want the.sql
file to be locatedpg_dump --column-inserts --data-only --table=<table> <database> > my_dump.sql
Note that the
> my_dump.sql
part of this command will put everything into an .sql file named my_dump如果您使用远程访问并想要转储所有数据库数据,您可以使用:
pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump
它将创建包含所有数据库数据的转储并使用
pg_restore -a -h your_host -U your_user -W -Fc your_database
DATA.dump
在数据库中插入相同的数据,考虑到您具有相同的结构
just in case you are using a remote access and want to dump all database data, you can use:
pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump
it will create a dump with all database data and use
pg_restore -a -h your_host -U your_user -W -Fc your_database < DATA.dump
to insert the same data in your data base considering you have the same structure
放入我喜欢的脚本中:
Put into a script I like something like that:
对于 postgres 12,这对我有用:
for postgres 12, this worked for me:
例如,您可以仅将用户(角色)
john
的apple
数据库的数据导出到backup.sql
,如下所示。 *我的回答解释了如何导出架构和数据:或者:
并且,您可以仅使用
将用户(角色)
语句,其列名如下所示:john
的apple
数据库的数据导出到backup.sql
INSERT并且,您只能将用户(角色)
john
的apple
数据库的数据导出到backup.sql
仅包含INSERT
语句,该语句没有列名,如下所示:并且,您可以仅导出特定表
person
的数据和用户(角色)john
的apple
数据库的animal
到backup.sql
,只需INSERT< /code> 语句,其列名称如下所示。 *一条命令指定多个表:
或:
或:
最后比如只导出
apple<的特定表
person
和animal
的数据/code> 用户(角色)john
的数据库到backup.sql
,仅使用INSERT
语句,其列名称如下所示:然后,您可以使用 backup.sql 导入到用户(角色)
john
的orange
数据库.org/docs/current/app-psql.html" rel="nofollow noreferrer">psql 必须用于导入非存档文件,如下所示。 *您必须创建orange
数据库和架构,否则会出现错误并且 我的回答解释了如何创建数据库和我的回答解释了如何导入架构和数据:并且,例如,您仅导出和存档(
-Fc
)的数据用户(角色)john
的apple
数据库的特定表person
和animal
到backup.sql
仅包含INSERT
语句,其列名称如下所示。 *我的回答解释了如何导出和存档数据库:然后,您可以使用 pg_restore 必须用于导入存档文件,如下所示。 *您必须创建
orange
数据库和架构,否则会出现错误并且 我的回答解释了如何创建数据库和我的回答解释了如何导入存档文件:For example, you can export only the data of
apple
database of the user(role)john
tobackup.sql
as shown below. *My answer explains how to export both schema and data:Or:
And, you can export only the data of
apple
database of the user(role)john
tobackup.sql
with onlyINSERT
statement which has column names as shown below:And, you can export only the data of
apple
database of the user(role)john
tobackup.sql
with onlyINSERT
statement which doesn't have column names as shown below:And, you can export only the data of the specific tables
person
andanimal
ofapple
database of the user(role)john
tobackup.sql
with onlyINSERT
statement which has column names as shown below. *Specifying multiple tables are available in one command:Or:
Or:
Lastly for example, you export only the data of the specific tables
person
andanimal
ofapple
database of the user(role)john
tobackup.sql
with onlyINSERT
statement which has column names as shown below:Then, you can import
backup.sql
toorange
database of the user(role)john
with psql which must be used to import non-archive files as shown below. *You have to createorange
database and the schema otherwise there is error and my answer explains how to create a database and my answer explains how to import schema and data:And, for example, you export and archive(
-Fc
) only the data of the specific tablesperson
andanimal
ofapple
database of the user(role)john
tobackup.sql
with onlyINSERT
statement which has column names as shown below. *My answer explains how to export and archive a database:Then, you can import archive
backup.sql
toorange
database of the user(role)john
with pg_restore which must be used to import archive files as shown below. *You have to createorange
database and the schema otherwise there is error and my answer explains how to create a database and my answer explains how to import archive files:要在没有 root 用户的情况下将数据集作为插入命令获取 - 使用不同的用户
pg_dump -U -a --column-inserts --data-only > backup.sql
数据将被备份到backup.sql文件中
To get the data set as insert commands without root user - using different user
pg_dump -U -a --column-inserts --data-only > backup.sql
data will be backed up into a backup.sql file