2016-07-10 120 views
4

我正在試圖消除5_半徑爲ST_Buffers的多邊形表的邊界,並將它們轉儲到另一個表中。第一個表格包含大約一千萬個多邊形。 包含多邊形的表是:錯誤:數組大小超過了允許的最大值(1073741823)

CREATE TABLE poly_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326)); 

下面是我要創建表:

CREATE TABLE buffer_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326)); 

INSERT INTO buffer_5km(gid,bufferType,the_geog) VALUES (1,'test',(SELECT (ST_Dump(ST_Multi(ST_Union(ST_MakeValid(poly_5km.the_geog::geometry))))).geom::geography FROM poly_5km WHERE poly_5km.bufferType= 'test')); 

但每當我運行INSERT語句,我得到這個錯誤:

ERROR: array size exceeds the maximum allowed (1073741823) 

任何人都可以告訴我我做錯了什麼嗎?

+0

您的選擇消耗太多內存。批量過程怎麼樣? –

+0

是關於系統內存還是列大小限制?我的系統上有16 GB RAM。我也嘗試過'ST_MemUnion'。但它太慢,需要永遠運行。 – Rahul

+0

您正在加載太多嘗試使用64位或批處理大小的進程。 –

回答

6

您正試圖存儲超過1GB的長度值。 PostgreSQL對象has 1GB limits - 你不能改變它。這個限制在32或64位平臺上是相同的。所以你必須改變算法或粒度。

相關問題