Как удалить комментарии и настройки из вывода pg_dump? - PullRequest
2 голосов
/ 20 июня 2019

Я пытаюсь сбросить только данные из базы данных PostgreSQL, используя pg_dump, а затем восстановить эти данные в другую.Но создание сценария 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 Ответ

1 голос
/ 21 июня 2019

Я не думаю, что есть.Я бы просто передал через grep, чтобы отфильтровать строки, начинающиеся с разделителя комментариев:

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