2012-11-18 33 views
1

我有一個Postgresql 9.1表,其中包含列「城市」,「admin1」和「國家」。我想選擇輸出格式爲「city,admin1,country」的唯一值。curl中的postgresql查詢

我可能在紐約和明尼蘇達州的羅切斯特有多個條目,但我只希望每個條目都有。這是填充彈性搜索索引,我使用的JDBC river plugin

以下SELECT做什麼,我想在PGAdmin3的SQL編輯器:

SELECT city || ', ' || admin1 || ', ' || country AS city FROM table GROUP BY city, admin1, country; 

,但在以下

curl -XPUT 'localhost:9200/_river/nibbel_river/_meta' -d '{ 

      "type" : "jdbc", 
      "jdbc" : { 
       "driver" : "org.postgresql.Driver", 
       "url" : "jdbc:postgresql://localhost:5432/table", 
       "user" : "", 
       "password" : "", 
      "sql" : "SELECT city || ', ' || admin1 || ', ' || country AS city FROM everything GROUP BY city, admin1, country", 
      "poll" : "7d" 
      }, 
      "index" : { 
       "index" : "city", 
       "type" : "everything" 
      } 
     }' 

與失敗錯誤

curl: (6) Couldn't resolve host ' || admin1 || ,' 
curl: (3) [globbing] unmatched close brace/bracket at pos 102 
{"error":"MapperParsingException[Failed to parse [jdbc.sql]]; nested: JsonParseException[Unexpected end-of-input in VALUE_STRING\n at [Source: [[email protected]; line: 8, column: 565]]; ","status":400} 

這是什麼語法?

回答

5

在查詢所有的撇號必須逃脫這樣的:'\''例如:

curl -XPUT 'localhost:9200/_river/nibbel_river/_meta' -d '{ 
    "type" : "jdbc", 
    "jdbc" : { 
     "driver" : "org.postgresql.Driver", 
     "url" : "jdbc:postgresql://localhost:5432/table", 
     "user" : "", 
     "password" : "", 
     "sql" : "SELECT city || '\'', '\'' || admin1 || '\'', '\'' || country AS city FROM everything GROUP BY city, admin1, country", 
     "poll" : "7d" 
    }, 
    "index" : { 
     "index" : "city", 
     "type" : "everything" 
    } 
}' 
+0

就是這樣,謝謝。我試圖用'唯一'逃脫。 – Dave