我有一个名为:nyummy的数据库模式和一个名为cimory的表:

create table nyummy.cimory (
  id numeric(10,0) not null,
  name character varying(60) not null,
  city character varying(50) not null,
  CONSTRAINT cimory_pkey PRIMARY KEY (id)
);

我想将cimory表的数据导出为插入SQL脚本文件。但是,我只想导出城市等于“tokyo”的记录/数据(假设城市数据都是小写的)。

怎么做呢?

解决方案是使用免费的GUI工具还是命令行并不重要(尽管GUI工具解决方案更好)。我尝试过pgAdmin III,但我找不到这样做的选项。


当前回答

对于我的用例,我可以简单地管道到grep。

pg_dump -U user_name --data-only --column-inserts -t nyummy.cimory | grep "tokyo" > tokyo.sql

其他回答

这是一种简单快捷的方法,可以用pgAdmin手动将表导出到脚本中,无需额外安装:

右键单击目标表并选择“备份”。 选择备份文件的存放路径。格式选择“普通”。 打开底部的“转储选项#2”选项卡,并勾选“使用列插入”。 单击backup -按钮。 如果你用文本阅读器(例如notepad++)打开结果文件,你会得到一个创建整个表格的脚本。从那里您可以简单地复制生成的insert语句。

该方法还可以使用@Clodoaldo Neto的回答中演示的生成export_table的技术。

你有没有试过在pgadmin执行查询“EXECUTE query WRITE RESULT TO FILE”选项

它只输出数据,其他的试试

pg_dump -t view_name DB_name > db.sql

-t option used for ==>只转储匹配表的表(或视图或序列),参考

您可以查看表与指定的记录,然后转储sql文件

CREATE VIEW foo AS
SELECT id,name,city FROM nyummy.cimory WHERE city = 'tokyo'

我需要一种不需要创建临时表(在生产环境中)就可以生成插入语句的方法。我确实看到了上面的pg_dump的一些有用的参数,但最终还是设计了一种方法

生成插入语句并转储到文件中

下面的陈述很有用,我觉得对那些在这里找到类似答案的人会很有用。

$ /usr/local/bin/pg_dump -h the_db_host_address -d the_db_name --table=schema_name.table_name --data-only --column-inserts -U postgres -p the_port_number -v -f /Users/the_user/folder_name/insrt_stmts_file_name.sql

下一件事是一个提示,要求密码,在上面的情况下,我提供了postgres密码,但任何其他用户应该工作良好,具有读取能力。

我运行了文件中的插入语句: insrt_stmts_file_name。在DBeaver客户端执行sql命令。

但同样可以从命令提示符运行,使用以下脚本:

/usr/local/bin/psql -h the_db_host_address -d the_db_name -v -U postgres -f /Users/the_user/folder_name/insrt_stmts_file_name.sql

pg_dump / psql标志的引用: -h = host -d = db name -v = verbose(它会随着进程输出) -U = db用户名 -f =文件/路径

SQL Workbench有这样一个特性。

运行查询后,右键单击查询结果并选择“Copy Data As SQL > SQL Insert”