2009-10-12 8 views
1

un peu newb question: dans mon DB j'ai une table avec un champ binaire. Je ne voudrais pas chercher tout ce champ dans une requête, mais plutôt dans une partie, de préférence en utilisant ODBC. Est-ce possible? J'utilise PostgreSQL 8.3 - au cas où une solution existe pour ce SGBD spécifique. Merci.requête partie d'un champ binaire de la table sql

Obtenir des données partie par partie semble être possible avec la fonction SQLGetData, mais je voudrais également sauter une partie du blob, sans le charger. La question peut donc être formulée comme suit: est-il possible d'ignorer certains octets lors de la lecture d'un blob par SQLGetData?

Répondre

1

Si par blob vous voulez dire PostgreSQL bytea, alors vous pouvez simplement utiliser select substring(bytea_column from ? for ?).

Il est rapide lorsque le blob de données n'est pas compressé - vous devez empêcher la compression automatique de bytea en utilisant alter table tablename alter column bytea_column set storage external. Seules les lignes insérées après alter table ne seront pas compressées, vous devez donc le faire sur une table vide ou supprimer et réinsérer toutes les données après cette commande. Je l'utilise pour récupérer des blobs (données de fichiers binaires comme DOC ou PDF) de la base de données en morceaux. Fonctionne bien.

Questions connexes