2014-02-18 22 views
1

我試圖把一個巨大的數據放入PostgreSQL(PostGIS的詳細信息)。
約100個場景,每個場景包含12個波段的光柵圖像。每個圖像大約是100MB
我做什麼:遠程數據庫上的PostgreSQL:沒有可用的緩衝區空間(達到最大連接數)?

For each scene in scenes ( 
    for each band in scene ( 
     Open connection to postGIS db 
     Add band 
    ) 
    SET PGPASSWORD=password 
    psql -h 192.168.2.1 -p 5432 -U user -d spatial_db -f combine_bands.sql 
) 

它運行良好,直到場景#46。它導致錯誤沒有可用的緩衝區空間(達到最大連接數)
我在Windows 7上運行腳本,遠程服務器在Ubuntu 12.04 LTS上。

更新:連接到遠程服務器並運行sql文件。

+1

既然它說「達到最大連接數」我猜你會繼續打開新的連接,永遠不會關閉舊的連接。您沒有說明您的最大連接數配置爲多少,但在任何情況下,許多並行插入不太可能是最有效地使用磁盤I/O的方式。 –

+0

我的腳本文件,包含連接字符串到遠程數據庫,執行上述所有步驟。在打開連接步驟中,執行連接字符串。我不確定psql是否可以自動關閉連接。 – Jackie

+0

psql將在完成執行時關閉連接。 –

回答

0

此消息:

沒有緩衝區的可用空間(最大連接數達到?)

來自Java異常,而不是PostgreSQL服務器。 Java堆棧跟蹤可能對獲取某些上下文很有用。

如果連接被拒絕的PostgreSQL,該消息將是:

FATAL: connection limit exceeded for non-superusers 

不過也可以是,該程序由不關閉到PostgreSQL其連接超過開放套接字的其最大數量。腳本應該在完成後立即關閉每個數據庫連接,或者打開一個數據庫連接並在整個過程中重複使用它。

只有在並行發出查詢時才需要同一程序的同時連接,這似乎不是這種情況。

+0

謝謝丹尼爾。我已經更新了這個問題。該消息還說:你確定你的遠程端口是5432端口。另外,據我所知連接是自動關閉的。或者你能告訴我如何在批處理腳本中關閉psql嗎? – Jackie

+0

@Jackie:我認爲這個消息與'psql'沒有關係,而是與腳本中的其他東西有關。 –

+0

您可以告訴我如何關閉批處理腳本中的psql連接或重新使用批處理腳本中的連接 – Jackie

相關問題