PostgreSQL JDBC - 可以删除但不能重新创建索引

时间:2010-07-29 01:37:19

标签: java postgresql jdbc foreign-keys indexing

我一直在寻找答案,但到目前为止没有运气......

我想对具有数百万条记录的数据库执行批量操作,阅读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 个答案:

答案 0 :(得分:1)

无法评论像Michal Niklas那样的答案,但是你的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;
  • 表空间应该位于
  • 之前
  • 子句所在的每个字段 拥有“不是空”