2017-01-24 4 views
2

интересно о небольшой проблеме удобства моего atm.Postgresql - база данных дампа с таблицами x - только схема данных, но данные из одной таблицы

Скажем, у меня есть база данных с переменным количеством таблиц, и я хочу дамп этой базы данных, а только структуру таблицы и данные одной конкретной таблицы.

Это, конечно, в принципе можно сделать, но команда будет довольно длинной, и мне придется знать все таблицы.

Но мне нужна команда, не зная имен или количества других таблиц, только одна таблица, данные которой я хочу, должна быть релевантной, остальные в основном просто крупный рогатый скот, и в конце я хотел бы все это в одном файле.

С нетерпением ждем некоторых предложений или, может быть, указателей на то, как решить мою проблему. Действительно любопытно :)

ответ

2

формат вывода по умолчанию pg_dump является psql скрипт, так что вы можете просто сцепить их:

pg_dump -d my_db --schema-only > dump.sql 
pg_dump -d my_db -t my_table --data-only >> dump.sql 
+0

Правда, это довольно очевидное решение. Спасибо в любом случае, но в основном я хочу получить некоторый опыт работы с postgresql через более сложные решения. Но, конечно, я также ищу, желательно, короткие и простые решения моей проблемы. Конкатенация хороша и работает, но я бы предпочел один лайнер;) – Samarek

+0

@Doeyo: Ну, вы могли бы втиснуть его в одну строку с помощью '{pg_dump ...; pg_dump ...}> dump.sql' ... Postgres не предоставляет никакого способа экспортировать структуру базы данных, отличную от 'pg_dump', а опции' --schema only 'и '--data-only' взаимоисключающим, поэтому я думаю, что это примерно так же просто, как это получится. –

+0

Но если вы хотите что-то «разработать» для себя, вот пара ужасных kludges ... Вы могли бы [создать временную базу данных, которая соответствует вашему желаемому результату] (http://pastebin.com/5vw9708c), или [запретить сброс других таблиц через политики безопасности строк] (http://pastebin.com/EpAD820t). Пожалуйста, не запускайте ни одно из них в любой системе, на которой вы действительно заботитесь :) –