Postgresql
將數據儲存在 CSV 文件中的數據庫策略?
我是 Postgres 社區的新手,很想听聽您的建議。
為了提供更多上下文,每個文件都與一個唯一的郵政編碼和地址相關聯,並包含 8,760(365 天 x 24 小時)行數據。這些文件包含兩列。
- 時間戳
- 數據
我想了解如何將每個 csv 文件的數據儲存在數據庫中。
最明顯的解決方案是將每個 csv 文件中的數據儲存在單獨的數據庫表中。但是,如果數據庫表只包含兩列(時間戳和數據),我不確定如何保留地址和郵政編碼。
希望聽到有關數據庫實現的任何其他建議。
幾乎每一個“Table-per-Thing”設計都是一個壞主意。你
幾乎總是不得不加入
$$ all $$那些桌子和那裡有很多桌子讓生活變得非常困難。
而且,如果您必須更改表結構,例如添加新列,則必須多次執行 alter table。乏味。 您應該希望將所有這些 CSV 載入到單個表中,以郵政編碼、地址和時間戳(或它們的某些組合,取決於您需要如何檢索此數據)以及數據欄位為鍵。
create table all_data ( zipcode ... , address ... , timestamp ... , data_value , primary key ( zipcode, address, timestamp ) , index( timestamp, zipcode, address ) );
您不會說該數據欄位中有什麼*,但如果它是您**可能想要查詢部分*內容的一大塊內容,請考慮將這些部分分解為單獨的欄位。是的,這些天你可以在列中擁有“複雜”的數據,但是有
$$ still $$這樣做的成本(性能損失)。 我建議使用中間表進行載入,並在數據被正確載入到表之前對其進行一些檢查。
即使你有一百萬個這樣的文件,你仍然只能查看大約 80 億條記錄——這對於一個體面大小的 PostgreSQL 集群來說不算什麼。