запросить часть двоичного поля из таблицы SQL - PullRequest
1 голос
/ 12 октября 2009

немного новый вопрос: в моей БД у меня есть таблица с двоичным полем. Я хотел бы получить не все поле в запросе, а скорее его часть, предпочтительно с использованием ODBC. Это вообще возможно? Я использую PostgreSQL 8.3 - на случай, если существует решение для этой конкретной СУБД. Спасибо.

Получение данных по частям представляется возможным с помощью функции SQLGetData, но я также хотел бы просто пропустить часть большого двоичного объекта, не загружая его. Таким образом, вопрос можно сформулировать следующим образом: можно ли пропустить несколько байтов при чтении большого двоичного объекта с помощью SQLGetData?

1 Ответ

1 голос
/ 13 октября 2009

Если под blob вы подразумеваете байт PostgreSQL, то вы можете просто использовать select substring(bytea_column from ? for ?).

Быстро, когда большой двоичный объект данных не сжимается - вы должны предотвратить автоматическое сжатие байтов, используя alter table tablename alter column bytea_column set storage external. Только строки, вставленные после alter table, не будут сжаты, поэтому вы должны сделать это в пустой таблице или удалить и заново вставить все данные после этой команды.

Я использую его для получения больших двоичных объектов (данных двоичных файлов, таких как DOC или PDF) из базы данных в виде фрагментов. Хорошо работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...