2011-03-01 6 views
4

큰 개체에 데이터가 있습니다. 이제 원본 복사본을 유지하면서 추가 할 수 있도록 복사본을 만들고 싶습니다. JDBC 호출 또는 SQL 문을 사용하여이를 발생할 수 있습니까?db 서버에 Postgresql Large Object를 복사 할 수 있습니까?

내가 찾은 모든 리소스에서 클라이언트의 모든 데이터를 실제로 읽고 복사본을 다시 작성해야하는 것으로 보입니다. 왕복 여행을 많이하는 편이 낫습니다.

답변

1

server-side lo_import and lo_export 기능을 살펴보십시오. 데이터베이스에서 파일 시스템으로 데이터를 옮겨야한다.하지만 적어도 클라이언트의 파일 시스템이 아니라 서버의 파일 시스템이다.

3

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

는 첫 삽입 문

pg_large_object reference
Object Type Identifier (oid) reference

에 의해 반환 된 OID 큰 개체의 알려진 OID
my_new_oid입니다
관련 문제