我一直在寻找答案,但到目前为止没有运气......
我想对具有数百万条记录的数据库执行批量操作,阅读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 :(得分: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;