如何从pg_dump输出中删除注释和设置?

6

我正在尝试使用pg_dump仅从PostgreSQL数据库中转储数据,然后将这些数据恢复到另一个数据库中。但是,使用此工具生成的SQL脚本还会将一些注释和设置添加到输出文件中。

运行以下命令:

pg_dump --column-inserts --data-only my_db > my_dump.sql

我会得到类似以下的内容:
--
-- PostgreSQL database dump
--

-- Dumped from database version 8.4.22
-- Dumped by pg_dump version 10.8 (Ubuntu 10.8-0ubuntu0.18.04.1)

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET row_security = off;

--
-- Data for Name: sf_guard_user; Type: TABLE DATA; Schema: public; Owner: admin
--

INSERT INTO public.....

有没有办法避免 pg_dump 生成这些注释和设置? 我可以编写一个小脚本来删除第一个插入之前的每一行,但它也会在文件的各个位置生成注释,我相信有更清晰的方法可以处理,但我找不到。
1个回答

2

我认为没有。我会简单地使用 grep 过滤以注释分隔符开头的行:

pg_dump --column-inserts --data-only my_db | grep -v "^--" > my_dump.sql

1
最终我使用sed命令成功了,命令为sed -i '/^SET/d' dump.sql,因此我接受了你的答案,它是等效的! - PopHip

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