q:一個可直接在 CSV/TSV檔案上執行SQL的開源專案

sunbiaobiao發表於2014-05-08
  • q 讓你把文字當資料庫

q讓你直接在CSVs/TSVs(逗號分割檔案/製表分割檔案)或其他表格式的文字檔案上執行像SQL一樣的查詢,查詢操作包括joins 或其他SQL操作,支援自動欄位型別和名字的檢測。

  • 概覽   

你曾經是否盯著螢幕上的文字檔案,希望你可以像對資料庫一樣從它上面查詢到你想要的一切資料,我好多次都遇到這個情形,最終我意識到我不是想把它變成資料庫,而是對它進行SQL操作。

SQL是針對資料的宣告式語言,宣告式程式設計告訴機器做什麼,至於怎麼做到的,你可以不用管。這也是SQL強大的原因。在SQL看來,資料就是資料,而不是二進位制位,位元組或字元。

這個工具就是旨在在文字檔案和SQL操作上架起一道橋樑。

q允許在表格式文字上執行SQL查詢,像join操作和子查詢。

你可以使用 gitter chat room  直接聯絡我,我儘量都線上。

  • 亮點
  1. 無縫的多表關聯查詢,也就是JOIN操作,到時把資料表名換成檔名,也可以終端輸入。
  2. 支援自動欄位型別和名字的檢測
  3. 多種解析模式,寬鬆模式/嚴格模式,寬鬆模式讓你輕鬆的解析像日誌檔案一樣的半結構化的資料。
  4. 標準安裝,RPM, Homebrew (蘋果機子上). Debian 的安裝包馬上就來。當欄位值中包含有半形逗號(引用“”)。
  5. 完全UTF-8字元支援,或其他字符集。
  6. 壓縮檔案的處理
  7. 輸出支援分隔符配對和選擇
  8. 美化輸出格式
  9. RPM安裝時附帶man幫助手冊
  •  安裝

目前的穩定版本是1.3.0。

除了python >= 2.5沒有其他要求。

  • Mac 使用者

直接執行 brew install q.

  • 手動安裝(非常簡單,因為沒有依賴)
  1.  下載q的安裝檔案到已經在PATH路徑的檔案中
  2. 使檔案可執行
  •  基於RPM的linux發行版
  1. 下載RPM
  2. 使用rpm -ivh <rpm-name>.命令安裝

RPM 包括man手冊, 只要執行man q。

  •  使用

q的基本使用很簡單:q <flags> <query>,但其實這中間隱藏很多特性,你可以使用flags選項來使用。

最簡單用例:q “SELECT * FROM myfile” ,列印出全部檔案。

  • 侷限
  1. 不檢查資料大小邊界
  2. 檔名帶有空格還不行,我正在改進
  • 未來打算
  1.  讓資料載入更快
  2. 可以和外部資料庫同時使用
  3. 更真實的SQL支援,智慧執行查詢語句
  4. 智慧批操作插入資料庫
  5. 更全的子查詢
  6. 提供除了SELECT – INSERT 和 CREATE TABLE SELECT更多操作
  •  聯絡

我們歡迎任何對這個工具的反饋建議和批評,當然提交程式碼是最好的。

Harel Ben-Attia, harelba@gmail.com@harelba 在推特上。

相關文章