內容概述
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 csvkitmacOS 使用 Homebrew 的話,也可以用 brew install csvkit 安裝。安裝完成後,即可使用 csvkit 提供的各種命令列工具。
存取和操作
以下是一些常用的 csvkit 指令範例:
1. 將 Excel 檔案轉換為 CSV:
in2csv data.xlsx > data.csv2. 選取特定欄位:
csvcut -c name,age data.csv3. 篩選包含特定字串的資料列:
csvgrep -c name -m "Alice" data.csv4. 依欄位排序:
csvsort -c age data.csv5. 顯示統計資訊:
csvstat data.csv6. 使用 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(指令範例為作者原有內容,本次未重新實機測試)。
