Postgresql 如何更新Postgres表中的bytea数据?

Postgresql 如何更新Postgres表中的bytea数据?,postgresql,Postgresql,我正在尝试将本地存储的文件内容导入表中行的列中。 柱的类型为bytea 比如: UPDATE server_info SET key = lo_import('C:\Users\certificate.p12') WHERE server_id = 1; 但是,它给出了以下错误: ERROR: column "key" is of type bytea but expression is of type oid 我试过选角。在下面一行中使用: UPDATE server_info SET

我正在尝试将本地存储的文件内容导入表中行的列中。 柱的类型为bytea

比如:

UPDATE server_info
SET key = lo_import('C:\Users\certificate.p12')
WHERE server_id = 1;
但是,它给出了以下错误:

ERROR:  column "key" is of type bytea but expression is of type oid
我试过选角。在下面一行中使用:

UPDATE server_info
SET key = lo_import('C:\Users\certificate.p12')::bytea
WHERE server_id = 1;
但它给出了:

ERROR:  cannot cast type oid to bytea

我不熟悉使用Postgres。这件事上的任何线索都会有帮助。谢谢

仅使用SQL无法做到这一点


您必须用自己选择的语言编写一个程序,将文件读入内存,并将其作为参数插入
INSERT

好吧,如果您只想使用SQL,您可以首先将其作为oid导入,然后将其转换为bytea。但这有点奇怪

ALTER TABLE server_info add column key_bytea bytea
UPDATE server_info SET key_bytea = lo_get(key)
ALTER TABLE server_info drop column key
ALTER TABLE server_info rename column key_bytea to key

可以这样我就能够做到这一点,即使用一个程序。但我想知道是否可以通过SQL实现。您使用的是哪个SQL客户机?有些人支持将文件“上传”到bytea列中。@a_horse_,没有名字,我正在使用pgAdmin 4作为客户端