簡體   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