2010-07-29 2 views
2

을 다시하지,하지만PostgreSQL의 JDBC는 - 드롭하지만 난 대답을 찾고 있었어요 인덱스

지금까지 운이 ... 나는 읽기, 기록의 잠재적으로 수백만 데이터베이스에 대량 작업을 수행 할 수 없습니다 PostgreSQL 가이드 : '13 .4 데이터베이스 채우기 '1, 색인 및 외래 키 제약 조건을 제거하여 복사 작업의 속도를 높일 것을 제안합니다.

JDBC 문을 사용하여이 작업을 수행하려고합니다. 문제없이 색인을 삭제할 수 있지만 데이터베이스를 채우고 다시 만들면 문제가 발생합니다. 내가 만드는 오전 인덱스 '이나 근처의'구문 오류 이름 얻을 :

Statement stmt = connection.createStatement(); 
String query = "CREATE UNIQUE INDEX type_uk ON cell (field1, field2, field3, field4) WHERE field3 AND field4 IS NOT NULL TABLESPACE lcindex"; 

stmt.executeUpdate(query); 
connection.commit(); 

내가 psql의에서이 쿼리를 실행하면, 그것은 성공적하지만 인덱스를 만듭니다, 그래서 조금 혼란 스러워요. ..

어떤 도움, 통찰력, 제안 등은 많이 감사 할 것입니다 :) 미리 감사드립니다.

+0

내가 TABLESPACE없이 (예 : 인덱스를 만들 수 있어요) Jython에서 JDBC를 사용합니다. 간단한 색인을 만들 수 있습니까? 어떤 버전의 JDBC와 PostgreSQL을 사용합니까? –

+0

나는이 고유 한 인덱스를 삭제하고 재 작성하려고 시도했지만 간단한 인덱스를 삭제하고 다시 시도해 보겠습니다. PostgreSQL 8.3.3에서 JDBC 8.4-701을 사용하고 있습니다. – cg776

+0

postgresql 서버 로그에 보내는 SQL과 함께 오류가 표시됩니까? (어떤 경우에 SQL에 어떤 식 으로든 일어나고있는 경우에 대비하여 ...) – araqnid

답변

1

Michal Niklas처럼 답변에 댓글을 달 수는 없지만 SQL 문은 Postgres에서 불법이며 작동하지 않습니다. 내 생각 엔 :

  • 절은 가지고 을 가지고이 모든 필드가 "null가 아닌"여기서 전에

    CREATE UNIQUE INDEX type_uk ON cell (field1, field2, field3, field4) TABLESPACE lcindex 
        where field3 is not null and field4 is not null; 
    
    • 테이블 스페이스가 와야
  • +0

    좋아, 나는 이것을 최대한 빨리 시도하고 다른 사람들이 이것이 효과가 있는지 알 수 있도록 여러분에게 돌아갈 것입니다. 매우 감사합니다 :) – cg776

    관련 문제