2016-12-02 29 views
0

我正在尋找最佳方式來做某些事情,而且我不確定現有技術可以幫助我做到這一點。來自現有平面文件的類似DB的界面

我有大量的存儲在平面文件中的數據,比方說主要是標準csv文件,帶或不帶標題,包含ID和數字。這些文件分散在不同的文件夾中,但以「有組織的方式」(即我知道如何參數化路徑,它們不只是隨機傳播)。

問題是,是否有一種使用這些文件的方式,就好像它們是適當的數據庫一樣。也就是說,我想有一個可以查詢和獲取回覆的界面。讓我給你一個例子:假設我已經過期包含不同字段的文件。每個文件都有一個ID列表和許多條目,比如說值A,值B,值C等。 例如,我想知道每個以A開頭的ID和在日期x和日期之間的期間的值B是什麼年。如果所有的數據都在一個典型的SQL表彙總,我會查詢類似

SELECT ValueB FROM MY_TABLE WHERE ID LIKE 'A%' AND Date > x AND Date < y; 

是否有任何允許你這樣做從平面文件啓動技術? 我只需要讀取它們。這些文件由其他進程自動生成,永遠不需要編輯。另一方面,新的數據是定期添加的,所以我想這樣做「動態」。另外,如果這種技術是基於Python的,那麼這很好(但不是必須的),我對它更加熟悉。 在這個例子中,我想這個想法是通過一系列文件路徑來定義「MY_TABLE」。該表不是作爲硬盤驅動器中任何位置的單個實體存在的,而是數據實際上被表示爲這樣。

任何幫助在這個方向將不勝感激。

謝謝!

+0

理論上,sqlite虛擬表可以做到這一點; Google很快表示可能需要ASPW綁定。實際上,如果您可以將這些數據帶入真正的Sqlite表格,那麼您將得到很好的服務。 – cco

+0

謝謝你的評論。我的印象是,SQLite會將整個數據庫存儲在一個巨大的平面文件中,因此它只能用於小型項目。這裏我們講的是幾百Gb,所以理想情況下,我需要一些可以「隨時」選擇所需文件並只打開這些文件的東西。它有任何意義嗎? – fatoddsun

+1

如果你有備用磁盤空間(兩倍或更多)來加載數據到Sqlite,我會嘗試作爲第一遍。如果您在Windows上,那麼使用MSFT ODBC文本文件數據庫驅動程序也是一種選擇;如果你有Postgres的便利(這很容易做到),那麼文件FDW(https://www.postgresql.org/docs/current/static/file-fdw.html)是一個選項。無論如何,你必須決定如何將文件映射到表格(這裏沒有什麼魔法,這將有工作要做),但許多不同的環境能夠將文本文件映射爲數據庫文件(或導入它們)。 – cco

回答

相關問題