По умолчанию ora2pgpro импортирует объекты BLOB как bytea, и целевой столбец создаётся с типом bytea. Если вместо bytea нужно использовать большие объекты, добавьте в команду ora2pgpro параметр --blob_to_lo. При этом создаётся целевой столбец типа oid и BLOB сохраняются как большие объекты с использованием функции lo_from_bytea(). OID, возвращаемый вызовом lo_from_bytea(), записывается в целевой столбец вместо типа bytea. Поскольку используется функция, параметр разрешается только с типами экспорта SHOW_COLUMN, TABLE и INSERT. С типом экспорта COPY использовать этот параметр не допускается.
Если используется тип экспорта COPY или есть огромные BLOB ( > 1ГБ), которые невозможно импортировать функцией lo_from_bytea(), в команду ora2pgpro можно добавить параметр --lo_import. Тогда данные можно будет импортировать в два этапа.
Сначала экспортируйте данные с типом экспорта
COPYилиINSERT, в процессе чего в целевом столбце OID для BLOB проставляются 0, а значение BLOB сохраняется в отдельный файл. Также создаётся скрипт оболочки для импорта файлов BLOB в базу данных с помощью команды psql\lo_importи обновления столбца OID возвращаемыми значениями OID. Скрипт называетсяlo_import-TABLENAME.sh.Затем задайте переменную окружения
PGDATABASEи, возможно,PGHOST,PGPORT,PGUSERи т. д., если их значения отличаются от значений по умолчанию в libpq, и выполните все скриптыlo_import-TABLENAME.sh.
Кроме того, можно вручную выполнить VACUUM FULL для таблицы, чтобы устранить раздувание, вызванное изменением таблицы.
Примечание
Ограничение: в таблице должен быть первичный ключ, он используется в предложениях WHERE для обновления столбца OID после импорта большого объекта. Импорт BLOB вторым способом (--lo_import) очень медленный, поэтому его лучше оставить для строк с BLOB > 1ГБ, а для других использовать --blob_to_lo. Чтобы отфильтровать строки, можно задать директиву WHERE в ora2pgpro.conf.