PostgreSQL JDBC - может удалять, но не создавать индексы - PullRequest
2 голосов
/ 29 июля 2010

Я искал ответ, но пока не повезло ...

Я хочу выполнить массовые операции с базой данных с потенциально миллионами записей, читая руководство 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, он успешно создаст индекс, так что я немного запутался ...

Любая помощь, идеи, предложения и т. Д. Будет высоко ценится :) Заранее спасибо.

1 Ответ

1 голос
/ 02 августа 2010

Не могу прокомментировать ответ, как Михал Никлас, но ваше заявление sql недопустимо в postgres и не может работать. Мое предположение:

CREATE UNIQUE INDEX type_uk ON cell (field1, field2, field3, field4) TABLESPACE lcindex 
  where field3 is not null and field4 is not null;
  • табличное пространство должно стоять раньше, чем
  • каждое поле там, где есть предложение иметь "не ноль"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...