2016-12-22 65 views
1

我想存儲可能相當大的WKT,但我將它們存儲在對象值中的同時運行到32K限制。32K字符串限制是否有其他選擇?

create table A (id integer, wkt object); 
+0

如何將數據存儲在對象中?這是一個像wkt ['str']這樣的屬性嗎?否則,我會建議您將其存儲爲字符串或geo_shape(取決於您的要求) – claus

+0

@claus我們使用的是鍵值,因爲我們事先並不知道該wkt將代表什麼,每種類型可能有多個每個相關形狀的幾何形狀。例如,多邊形可能具有各種緩衝區,alpha形狀,簡化公差等等...將該對象平鋪到表中是可行的,但這樣做很好,因爲它將所有數據保留爲單行。我對geo_shape的理解是,我們不能直接獲取wkt,並且需要執行空間查詢(請參閱我的其他問題http://stackoverflow.com/questions/41286539) – nicerobot

+0

是的,您無法獲取WKT在使用geo_shape時返回...現在它取決於在插入鍵之前是否知道鍵,因爲您可以爲每個預期列預定義INDEX OFF(或INDEX USING PLAIN,...),然後您可以插入WKT字符串:) – claus

回答

0

因此,有存儲中的對象長字符串的方式:通過使用ignored

CREATE TABLE IF NOT EXISTS A (
    "id" INTEGER, 
    "wkt" OBJECT (IGNORED) 
) 

整個對象沒有被索引,也禁止其在其他SQL部位正確使用(他們將始終進行全表掃描)。

但是,下標工作得很好。

對於其他讀者:WKT也可以存儲爲geo_shape類型,或者與match directly一起使用。

相關問題