Я не думаю, что вы сможете использовать pg_dump
для этой временной таблицы. Проблема заключается в том, что temporary tables only exist within the session where they were created:
PostgreSQL вместо требует от каждой сессии выпустить свою собственную CREATE TEMPORARY TABLE
команды для каждой временной таблицы, которые будут использоваться. Это позволяет различным сеансам использовать одно и то же имя временной таблицы для разных целей, тогда как подход стандарта ограничивает все экземпляры данного временного имени таблицы одинаковой структурой таблицы.
Таким образом, вы должны создать временную таблицу за один сеанс, но pg_dump
будет использовать другой сеанс, который не имеет вашей временной таблицы.
Однако COPY
должно работать:
COPY
перемещает данные между таблицами PostgreSQL и стандартных файлов системных файлов.
но вы либо скопировать данные на стандартный вывод или файл на сервере базы данных (который требует доступ суперпользователя):
COPY с именем файла указывает серверу PostgreSQL напрямую читать или записывать в файл. Файл должен быть доступен для сервера, и имя должно быть указано с точки зрения сервера.
[...]
КОПИРОВАНИЕ Именование файла разрешено только для суперпользователей базы данных, поскольку оно позволяет читать или записывать любые файлы, на которые у сервера есть права доступа.
Так что использование COPY для выгрузки временной таблицы прямо в файл может быть не вариантом. Вы можете использовать COPY для стандартного вывода, но насколько хорошо это будет работать, зависит от того, как вы получаете доступ к базе данных.
Возможно, вам повезло, если вы не использовали временные таблицы. Разумеется, вам нужно было бы управлять уникальными именами таблиц, чтобы избежать конфликтов с другими сеансами, и вам нужно будет позаботиться о том, чтобы ваши временные временные таблицы были удалены, когда вы с ними закончили.
Это поможет, если вы могли бы дать некоторый опыт тому, чего вы пытаетесь достичь. Что вы загружаете в эти временные таблицы? Зачем pg_dump их? Кроме того, как вы ожидаете восстановить временную таблицу - какой результат вы ожидаете, учитывая, что временные таблицы являются * временными * и уходят в конце сеанса? Восстановление временной таблицы не повлияет, даже если вы сможете это сделать. –
@CraigRinger Я пытаюсь сделать что-то вроде [this] (http://stackoverflow.com/questions/8489464/postgresql-dump-restore) Поскольку мои данные разбросаны по нескольким таблицам, я хочу взять резервную копию только некоторые конкретные данные из всех таблиц и дамп в файле резервной копии. Я хочу восстановить эти данные в другой системе, которая может/не иметь этих данных. – Shirish11
@CraigRinger Я реализовал это с использованием нетемпературных таблиц, но решение не так эффективно. – Shirish11