Я пытаюсь использовать pg_dump --section=pre-data
для подавления ограничений CHECK в выводе pg_dump, но я обнаружил, что он все равно включает ограничения CHECK. Вот шаги, которые я выполнил сначала в psql
:
CREATE DATABASE test_pre_data_check_db;
\connect test_pre_data_check_db
CREATE TABLE the_table (the_column INT CONSTRAINT the_check CHECK (the_column > 0));
А затем в оболочке:
$ pg_dump --section=pre-data -d test_pre_data_check_db
--
-- PostgreSQL database dump
--
-- Dumped from database version 12.1
-- Dumped by pg_dump version 12.1
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: the_table; Type: TABLE; Schema: public; Owner: acolombi
--
CREATE TABLE public.the_table (
the_column integer,
CONSTRAINT the_check CHECK ((the_column > 0))
);
ALTER TABLE public.the_table OWNER TO acolombi;
--
-- PostgreSQL database dump complete
--
Это ошибка в pg_dump или я делаю это неправильно?
Соответствующая документация из Postgres:
- section = sectionname
Выгрузить только указанный раздел. Имя раздела может быть до данных, данных или пост-данных. Этот параметр можно указать несколько раз, чтобы выбрать несколько разделов. По умолчанию выгружаются все разделы.
Раздел данных содержит фактические данные таблицы, содержимое больших объектов и значения последовательности. Элементы пост-данных включают определения индексов, триггеров, правил и ограничений, отличных от проверенных ограничений. Элементы предварительных данных включают все другие элементы определения данных.
https://www.postgresql.org/docs/current/app-pgdump.html