Postgresql

將數據儲存在 CSV 文件中的數據庫策略?

  • February 16, 2022

我是 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 集群來說不算什麼。

引用自:https://dba.stackexchange.com/questions/307526