Как обновить байтовые данные в таблице Postgres? - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь импортировать содержимое файла, локально хранящегося в столбце строки в таблице.Тип столбца - 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.Любые выводы в этом вопросе будут полезны.Спасибо

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Что ж, если вы хотите сделать это только с помощью SQL, вы можете сначала импортировать его как oid, а затем преобразовать в байты.Но это немного устало.

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
0 голосов
/ 19 сентября 2018

Вы не сможете сделать это только с помощью SQL.

Вам придется написать программу на выбранном вами языке, которая считывает файлы в память и использует ее в качестве параметра INSERT.

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