Как заставить pg_dump (не) включать имя схемы для каждого объекта в DDL - PullRequest
0 голосов
/ 28 сентября 2019

Мне нужно сравнить 2 схемы БД (DDL) - Postgress 9.5

Я выполняю команду ниже на обоих серверах:

pg_dump -U postgres --dbname=db--schema-only -f schema.sql

Но я заметил один из выходных данныхпрефикс каждого объекта по имени схемы, например,

CREATE FUNCTION имя_функта_функции_имя

, в то время как другой не имеет значения, например:

CREATE FUNCTION имя_функции

Есть ли какая-либо опция в pg_dump, где я могу решить включить или нет имена схем в выходной DDL?(Предпочтение, по крайней мере, удалить эти префиксы схемы ...)

1 Ответ

0 голосов
/ 29 сентября 2019

Короче говоря, вы не можете.Но вы можете использовать sed для автоматизации большинства вашего редактирования.


#!/bin/sh

# dump only schema "tmp"
# force quoted identifiers
# use sed to strip them
# [youstillneedtoremove the "CReate SCHEMA $SCH_NAME-stuff

DB_NAME="postgres"

pg_dump -Upostgres -n tmp --schema-only --quote-all-identifiers $DB_NAME \
   | sed 's/"tmp"\.//g' > tmp_schema_stripped.sql

#EOF
...