csvkit 封面圖:用命令列工具處理 CSV 資料

csvkit:在命令列處理 CSV 的開源工具包

內容概述

csvkit 是一套用 Python 編寫的命令列工具集,專為處理 CSV(逗號分隔值)檔案而設計。採 MIT 授權,本文查核時的最新版本為 2.2.0。

應用場景

csvkit 適用於各種需要處理 CSV 檔案的情境,例如:

  • 將 Excel、JSON 等格式轉換為 CSV,或把資料庫查詢結果匯出成 CSV。
  • 從大型 CSV 檔案中快速篩選、排序或合併資料。
  • 在命令列中進行資料清理與分析,無需開啟試算表軟體。
  • 將 CSV 資料轉換為 JSON 格式,以供其他應用程式使用。

技術特點

csvkit 提供多種功能強大的命令列工具,包括:

  • in2csv:將 Excel(xls、xlsx)、JSON、DBF、固定寬度等格式轉換為 CSV。
  • sql2csv:執行 SQL 查詢,將資料庫結果輸出為 CSV。
  • csvcut:選取特定欄位。
  • csvgrep:根據條件篩選資料列。
  • csvsort:依指定欄位排序資料。
  • csvjoin:合併多個 CSV 檔案。
  • csvstat:顯示統計資訊,如欄位類型、最大值、最小值等。
  • csvsql:使用 SQL 查詢 CSV 資料,或將 CSV 匯入資料庫。

其他整合

csvkit 遵循 Unix 的哲學,每個工具專注於單一功能,並可透過管道(pipe)結合使用,形成強大的資料處理流程。例如:

in2csv data.xlsx | csvcut -c name,age | csvsort -c age | csvlook

上述指令將 Excel 檔案轉換為 CSV,選取 “name” 和 “age” 欄位,依年齡排序,並以表格形式顯示結果。

安裝步驟

csvkit 2.2.0 支援 Python 3.10 以上版本。確認已安裝 Python 3 後,在終端機中執行以下指令:

pip install csvkit

macOS 使用 Homebrew 的話,也可以用 brew install csvkit 安裝。安裝完成後,即可使用 csvkit 提供的各種命令列工具。

存取和操作

以下是一些常用的 csvkit 指令範例:

1. 將 Excel 檔案轉換為 CSV:

in2csv data.xlsx > data.csv

2. 選取特定欄位:

csvcut -c name,age data.csv

3. 篩選包含特定字串的資料列:

csvgrep -c name -m "Alice" data.csv

4. 依欄位排序:

csvsort -c age data.csv

5. 顯示統計資訊:

csvstat data.csv

6. 使用 SQL 查詢:

csvsql --query "SELECT name, age FROM data WHERE age > 30" data.csv

小技巧

  • 若 CSV 檔案使用分號等非逗號分隔符號,可用 csvformat 轉成標準逗號分隔:csvformat -d ";" data.csv > new_data.csv(-d 指定輸入的分隔符號,-D 則是指定輸出的分隔符號)。
  • 處理大型 CSV 檔案時,可使用 --snifflimit 0 關閉自動格式偵測,必要時再自行指定 --delimiter。
  • 結合 Unix 指令(如 head、tail)進行資料預覽:csvlook data.csv | head

教學影片

影片來源:TM Quest/YouTube

參考連結

成本與風險摘要

  • 適用對象與規模:需要在命令列或腳本中處理 CSV 的工程師、資料分析人員;適合中小型檔案與自動化流程。
  • 成本(硬體、訂閱、授權):免費,MIT 授權;一般電腦即可執行。
  • 維護時間:低;偶爾以 pip install --upgrade csvkit 更新即可。
  • 資安注意事項:CSV 若含個資,處理後的暫存檔與輸出檔同樣要妥善保管;用 csvsql 匯入資料庫時注意連線字串中的帳密不要寫死在腳本裡。
  • 常見誤區:以為 in2csv 能直接讀取 SQL 檔(資料庫請用 sql2csv);搞混 csvformat 的 -d(輸入)與 -D(輸出)分隔符號。
  • 不建議使用的情況:資料量非常大、需要高效能運算時,改用資料庫或專門的資料處理工具會更合適。
  • 測試日期與版本號:資料查核日期:2026-10-28;版本對照 csvkit 2.2.0(指令範例為作者原有內容,本次未重新實機測試)。
返回頂端