从PostgreSQL表中导出特定的行作为INSERT SQL脚本


Answers

对于纯数据输出使用COPY
你得到的文件每行只有一行表格(不是INSERT命令),它更小更快:

COPY (SELECT * FROM nyummy.cimory WHERE city = 'tokio') TO '/path/to/file.csv';

通过以下方式将其导入到具有相同结构的另一个表中:

COPY other_tbl FROM '/path/to/file.csv';

与客户端程序(如读取和写入本地客户端的文件的pg_dumppsql不同, COPY写入和读取服务器 本地的文件。 如果两者都运行在同一台机器上,那么它并不重要,但它可以用于远程连接。

还有psql\copy命令

执行前端(客户端)副本。 这是一个运行SQL COPY命令的操作,但不是读取或写入指定文件的服务器,而是读取或写入文件,并在服务器和本地文件系统之间路由数据。 这意味着文件的可访问性和权限是本地用户的权限,而不是服务器的权限,并且不需要SQL超级用户权限。

Question

我有一个名为: 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脚本文件。 但是,我只想输出城市等于'东京'的记录/数据(假设城市数据全部为小写)。

怎么做?

这个解决方案是否在免费软件GUI工具或命令行中(尽管GUI工具解决方案更好)并不重要。 我曾尝试pgAdmin III,但我找不到这样做的选项。




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

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



你有没有试过在pgadmin执行" EXECUTE QUERY WRITE RESULT TO FILE "选项来执行查询

它只能导出数据,否则试试

pg_dump -t view_name DB_name > db.sql

-t选项用于==>仅转储表(或视图或序列)匹配表, refer




SQL Workbench具有这样的功能。

运行查询后,右键单击查询结果并选择“将数据复制为SQL> SQL插入”