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

Pop*_*Hip 6 database postgresql pg-dump

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

运行此命令:

pg_dump --column-inserts --data-only my_db > my_dump.sql
Run Code Online (Sandbox Code Playgroud)

我得到类似的东西:

--
-- 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.....
Run Code Online (Sandbox Code Playgroud)

有什么办法可以避免pg_dump产生这些评论和设置吗?我可以做一个小脚本来在第一次插入之前删除每一行,但它也会在文件的任何地方生成注释,我相信有一种更清晰的方法可以继续但什么也没找到。

fph*_*ipe 3

我认为不存在。我只需通过grep管道过滤掉以注释分隔符开头的行:

pg_dump --column-inserts --data-only my_db | grep -v "^--" > my_dump.sql
Run Code Online (Sandbox Code Playgroud)

  • 是的,最后我使用 sed 和 `sed -i '/^SET/d' dump.sql` 完成了它,所以我接受你的答案,这是等效的! (2认同)