2012-07-30 2 views
1

이제 hibernate + postgresql을 사용하여 데이터를 유지하는 응용 프로그램을 개발 중입니다. 일련의 HashMap을 저장해야하므로 LOB (oid)가이 용도로 사용되었습니다. 그러나 postgresql에서의 oid 삭제 문제로 인해이 데이터를 oid 대신 bytea로 저장하기로 결정했습니다. 따라서 오래된 데이터를 유지하면서 열 유형을 oid에서 bytea로 변경하는 가장 좋은 방법은 무엇입니까? 그러한 데이터 변환을 위해 누군가가 작업 스크립트/솔루션을 제공 할 수 있다면 좋을 것입니다.Postgresql - 데이터 보유로 oid에서 bytea로 컬럼 유형 변경

미리 감사드립니다.

+0

[vacuumlo] (http://www.postgresql.org/docs/current/interactive/vacuumlo.html) 및 [lo] (http://www.postgresql.org/docs/current/)를 사용해 보셨습니까? interactive/lo.html) 모듈? 그들은 대부분의 경우 LO 자료를 자동으로 관리해야합니다. –

+0

예, vacuumlo을 시도했지만 문제가 있습니다. 데이터베이스에 대한 읽기/쓰기로드가 높기 때문에 vacuumlo는 실행중인 데이터베이스에서 정리를 완료 할 수 없어 실패합니다. – Vladimir

+0

이상하게도,'lo'의'lo_manage' 트리거와 함께이 관리는 원래의 트랜잭션 자체에서 일어나야하기 때문에 - 적어도 대부분. 물론'vacuumlo'만으로는 작업에 적합하지 않습니다. –

답변

0

lobs는 오프셋을 요구하지 않는 한 직렬화 가능 해시 맵에 대한 잘못된 해결책 일 수 있습니다. Bytea는 청소기입니다. 문제는 아마도 물건을 전환 할 수있는 가동 중단 시간을 가져야 할 것입니다.

아마도 내가 할 수있는 것은 새 열을 만들고 데이터를 복사 한 다음 연결을 해제 한 다음 이전 열을 삭제하는 것입니다. 그런 다음 적절한 진공 작업을 실행하십시오.

관련 문제