pgAdmin III:如何查看 blob?

21

我知道PostgreSQL会将BLOB内容写入到一个单独的表中,但是有没有办法从pgAdmin内部方便地查看BLOB内容呢?


“blob”列是什么数据类型?是bytea还是oid - user330315
3个回答

42
SELECT encode(blobdata::bytea, 'escape') FROM table as o where o.blobdata != ''

其中

  1. blobdata是bytea列(二进制大对象)
  2. "table"是包含列blobdata的表

as o where o.blobdata != ' 的需求是什么? - Janac Meena
@JanacMeena 可能是因为空值导致 encode 失败。祝你好运 :) - yair

3

如果我们需要通过SQL客户端(如pgAdmin)对二进制列进行SQL操作,最好使用以下base64编码:

以base64格式提取二进制数据

select id, encode(blob_column::bytea, 'base64') as blob_column from blob_table where id=1;

通过提供base64格式的数据来更新二进制数据

update blob_table set blob_column = decode('J0u0v1h4CulinCwUvk4dhw==', 'base64') where id=1;

0

我不确定你所说的“易于使用和方便”是什么意思,但最好的方法是使用lo_read(...)

这将把lob表示为bytea

从获取数据的角度来看,这很容易和方便,但是pgAdmin不会将转义字符串转换回原始二进制数据,因此您只能查看二进制数据的文本表示形式,如果您想要显示包含在lob中的png格式或其他任何格式的图像,则并不“易于使用和方便”。


是的,那也是我最终使用的方法...我只是希望有更方便的方式。记录一下,这是我最终使用的代码:select dType, id, loread(lo_open(docxml::::int, 131072), 999999999) from XmlPadraoNFe - Haroldo_OK
1
顺便说一句,发布这个问题几个月后我发现你可以使用 lo_get() 来完成同样的事情:select dType, id, lo_get(docxml::int) from XmlPadraoNFe - Haroldo_OK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接