Задать вопрос
  • Можно ли перенести файл с партицией из таблицы в одной БД Postgresql в другую БД?

    fzfx
    @fzfx
    18,5 дм
    нет, нельзя.
    этому мешает то, что если вы выполните перечисленные шаги, то это ничего не даст в лучшем случае, и "уронит" обе БД в худшем (и наиболее вероятном).
    проблемы начинаются с этого шага: "потом средствами OS перенести файл (именно файл)". во-первых, партиция - это не файл, а набор файлов в общем случае (файлов может быть более одного). во-вторых, файлы таблицы-партиции не самодостаточны, в частности, описание самой таблицы-партиции находится в pg_catalog вместе с другими таблицами и неотделимо от них на уровне работы с файловой системой.
    так что вам надо смотреть в сторону тех способов миграции данных, которые имеются в документации: снятия и восстановления дампа таблицы-партиции, либо же написания своего кода по миграции данных.
    Ответ написан
    Комментировать
  • Можно ли перенести файл с партицией из таблицы в одной БД Postgresql в другую БД?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Нельзя это сделать.
    Причин много:
    1. Все данные хранятся не в 1 файле, а в нескольких
    2. В файлах хранятся не вот уже готовые данные, а множество различных кортежей - для MVCC. А без понимания ID транзакции (которая в другой БД будет иной) они бессмысленны. То есть, переложив физически файлы ты получишь белеберду
    3. В Postgres нет возможности приаттачить файлы. Есть возможность INSERT/COPY, сдампить, но файлы напрямую нельзя. (нет такой опции в Attach)
    4. В файле хранятся не сериализованные в независимом формате данные, а (грубо говоря) структуры C. Как они располагаются зависит от endianess, компилятора и т.д.
    5. Даже если ты это все сделаешь, то не факт, что различные OID сойдутся - т.е. таблица будет хранить OID, которого в другой БД не существует

    Если хочешь ускорить процесс, но используй pg_dump с ключом -fd (специальный формат), а в pg_restore -j NJOBS - распараллеливание (NJOBS - кол-во воркеров).
    Ответ написан
    Комментировать