我試圖讓一個數據庫接受postgres數據庫表中的不同文件。我想支持的文件是不同的MIME類型。我想支持pdf,單詞,純文本和功能點。問題是我不知道要選擇什麼數據類型。 pgadmin(我正在使用的工具)的文檔非常令人滿意(我們說)。謝謝用於在數據庫中存儲不同文件的數據類型
回答
您可以在PostgreSQL中使用bytea
類型。
這樣的數據類型範圍的條目有多少個字節?有沒有辦法設置一個限制,因爲只有一個選擇。那是bytea,而不是bytea。如果你想設置一個限制,你會怎麼做? – patriques
@patriques:bytea基本上是「變化的」,參見:http://www.postgresql.org/docs/current/static/datatype-binary.html而且限制是1GB(參見:http://wiki.postgresql.org /wiki/FAQ#What_is_the_maximum_size_for_a_row.2C_a_table.2C_and_a_database。3F) –
雖然你可以將文件存儲在數據庫中內容,考慮存儲文件路徑來代替,而使用文件系統來存儲文件。
在IT界「你可以用任何東西做任何事情」,但這並不意味着你應該應該。
在這種情況下,您試圖將數據庫用作文件系統,但它可以做到,但數據庫不如存儲文件內容(通常是「大型」數據)的文件系統那樣高效或實用。它會:
- 使您的備份時間更長,更大的
- 減慢你的插入查詢下來(更多的I/O)
- 讓你的日誌文件較大(慢,更經常補)
- 使訪問文件慢(查詢VS簡單的磁盤I/O)
- 要求您通過數據庫去訪問文件(麻煩,不能用瀏覽器等)
- 等
以及有沒有一個很好的信息來源閱讀如何做到這一點。我從來沒有做過這樣的事情。 – patriques
存儲文件路徑也有幾個缺點:您必須重複訪問權限,不能以交易方式存儲文件,您需要確保數據庫不會引用不存在的文件,您需要確保你的文件系統不包含未引用的文件,你需要兩個不同的備份,你不能通過SQL訪問文件內容(因爲你需要改變技術,所以很麻煩)。簡而言之:沒有明確的贏家。任何一種解決方案都可能是正確的 - 這完全取決於需求。 –
我還想解釋Chris Date:首先基於*邏輯*考慮作出設計決定,其次考慮*實際*考慮。字符串,數字,RTE的內容,CSV文件或圖像之間沒有真正的區別。所有可以同樣有效地存儲在數據庫中。如果沒有需要考慮的性能問題,我認爲將數據存儲在數據庫中是絕對不容易的。 –
- 1. 用於在SQL Server數據庫中存儲音頻文件的數據類型?
- 2. 用ruby存儲數組中不同數據類型的數據
- 3. 用於在數據庫中存儲加密密鑰的數據庫類型
- 4. 在數據庫中存儲不同的值類型
- 5. LINQ不提供用於存儲文件的byte []數據類型
- 6. 用於存儲大型JSON的SQL Server數據庫中的數據類型
- 7. 與HashMap中存儲不同數據類型的數據單鍵
- 8. 在數據庫中存儲任意類型的文件
- 9. 用於存儲URL的數據類型
- 10. 用於在postgresql數據庫中存儲erlang pids的數據類型是什麼?
- 11. 用於在oracle數據庫中存儲經度和緯度的數據類型
- 12. 用於在Django數據庫中存儲版本號的數據類型
- 13. (my)SQL數據庫 - 存儲不同類型的相同值
- 14. 存儲文件的數據類型
- 15. 數據庫 - 將數值存儲在VARCHAR數據類型中
- 16. 用於存儲文件及其元數據的數據庫
- 17. 用於存儲不同數據類型的時間序列數據的簡單數據庫
- 18. 將文件存儲在不同的數據庫中?
- 19. 將mysql數據庫存儲在不同的文件夾中
- 20. 不在數據庫中存儲數據
- 21. C如何在內存中存儲不同的數據類型?
- 22. 用於存儲不同類型的「Person」的SQL數據庫設計
- 23. 用於存儲數據的數據庫模型?
- 24. 在配置文件中選擇不同類型的數據庫
- 25. 在數據庫中存儲XML文件
- 26. 在數據庫中存儲autocad文件
- 27. 與extjs中的不同數據類型相同的存儲
- 28. 存儲鍵/值緩存的數據庫表數據類型
- 29. 將用戶數據存儲在csv文件vs數據庫中
- 30. 基於平面文件的數據存儲與SQL數據庫
對不起,刪除了我的答案。起初我以爲你的意思是MS SQL。 (READ ADAM,READ!) –
您必須使用[二進制數據類型](http://www.postgresql.org/docs/8.1/static/datatype-binary.html),但我強烈建議您重新考慮這樣做。將文件存儲在數據庫中通常不是一個好主意。改爲存儲文件的路徑。閱讀本文:http://wiki.postgresql.org/wiki/BinaryFilesInDB – NullUserException
NullUserException可能是正確的,但我將二進制文件存儲在數據庫中始終沒有問題。如果您真的關心數據完整性,我認爲將數據存儲在數據庫中是個好主意。如果您只是將路徑存儲到文件中,則沒有什麼可以防止該文件被刪除或重命名,然後您的數據不再一致。 –