繁体   English   中英

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

[英]PostgreSQL JDBC - can drop but not recreate indexes

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

我想对可能包含数百万条记录的数据库执行批量操作,请阅读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中执行此查询,尽管它成功创建了索引,所以我有点困惑...

任何帮助,见解,建议等,将不胜感激:)在此先感谢。

无法像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;
  • 表空间应该放在哪里
  • where子句中必须具有“不为空”的每个字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM