2013-04-16 36 views
2

我一直在尋找無處不在(谷歌,stackoverflow等)一些文件如何使用PostgreSQL pg_read_binary_file()函數。PostgreSQL 9.x - pg_read_binary_file&插入文件到bytea

我能找到的唯一有意義的東西是this page在官方文檔中。

每次嘗試使用此功能時,都會出現錯誤。

例如:

SELECT pg_read_binary_file('/some/path/and/file.gif'); 
    ERROR: absolute path not allowed 

SELECT pg_read_binary_file('file.gif'); 
    ERROR: could not stat file "file.gif": No such file or directory 

我需要讓我的特定目錄文件的Postgres有機會獲得它?如果是這樣的目錄?


如果它的事項,我在看這個函數的原因是因爲我想文件插入數據庫,而doing crazy things

+2

您是否知道該文件應該位於* server *上,而不是您運行SQL語句的客戶端上?另外:「*只能訪問數據庫集羣目錄和log_directory中的文件*」 –

+2

從[docs](http://www.postgresql.org/docs/9.2/static/functions-admin.html#FUNCTIONS-ADMIN -GENFILE)「只能訪問數據庫集羣目錄和log_directory中的文件,對集羣目錄中的文件使用相對路徑,並使用與日誌文件的log_directory配置設置相匹配的路徑。」該文件必須位於PGDATA目錄中。 – Guedes

+0

你們都是對的。謝謝你的幫助。 – losthorse

回答

3

正如@a_horse_with_no_name和@guedes所述,解決方案是確保上傳的文件位於PGDATA目錄中的服務器上。

postgres documentation確實聲明文件位置是一項要求。

此外,我做了從另一個目錄到PGDATA目錄的符號鏈接,這樣我就不會打擾任何postgres數據結構。這似乎運作良好,我不必做任何以上crazy things