Могу ли я скопировать большой объект Postgresql на сервер БД? - PullRequest
4 голосов
/ 01 марта 2011

У меня есть данные в большом объекте, теперь я хочу сделать их копию, чтобы я мог добавить ее, сохранив копию оригинала.Есть ли какой-либо JDBC-вызов или оператор SQL, который я могу использовать, чтобы это произошло?

Из каждого найденного мной ресурса, похоже, мне действительно нужно прочитать все данные моему клиенту и снова записать их, чтобы получитькопия.Я бы предпочел спасти поездку туда и обратно.

Ответы [ 2 ]

3 голосов
/ 06 мая 2015

Большой объект можно скопировать / клонировать с помощью двух запросов , если вы знаете, что oid.

INSERT INTO pg_largeobject_metadata (lomowner, lomacl) 
  SELECT lomowner, lomacl
  FROM pg_largeobject_metadata
  WHERE oid = <my_old_oid>
RETURNING oid AS my_new_oid;

INSERT INTO pg_largeobject (loid, pageno, data)
  SELECT <my_new_oid>, pageno, data
  FROM pg_largeobject
  WHERE loid = <my_old_oid>;

my_old_oid - это известный идентификатор большого объектаmy_new_oid - это oid, возвращаемый первым оператором вставки

pg_large_object reference Ссылка на идентификатор типа объекта (oid)

1 голос
/ 01 марта 2011

Посмотрите на серверные функции lo_import и lo_export .Вам придется переместить данные из базы данных в файловую систему и обратно, но, по крайней мере, это файловая система сервера, а не клиента.

...