一个新问题:在我的数据库中,我有一个带有二进制字段的表。我不想获取请求中的整个字段,而是获取其中的一部分,最好使用 ODBC。有可能吗?我正在使用 PostgreSQL 8.3 - 以防该特定 DBMS 存在解决方案。谢谢。
使用 SQLGetData 函数似乎可以逐部分获取数据,但我也想跳过 blob 的一部分,而不加载它。所以问题可以表述为:SQLGetData 读取 blob 时是否可以跳过一些字节?
最佳答案
如果你所说的 blob 是指 PostgreSQL bytea,那么你可以使用 select substring(bytea_column from ? for ?)
。
数据 blob 未压缩时速度很快 - 您应该使用 alter table tablename alter column bytea_column set storage external
防止自动压缩 bytea。只有在 alter table
之后插入的行不会被压缩,因此您应该在空表上执行此操作,或者在此命令后删除并重新插入所有数据。
我正在使用它以 block 的形式从数据库中检索 blob(二进制文件数据,如 DOC 或 PDF)。效果很好。
关于sql - 从 sql 表中查询二进制字段的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554809/