🦔

【DuckDB】CSVをSQLライクに操作する

に公開

CSVデータを扱うときに、Excelでフィルタリングするだけでなくもっと柔軟に検索したり、計算したりしたいと思ったことはありませんか。
この記事では、CSVファイルをDuckDBを用いてSQLライクに操作する方法をまとめます。

DuckDBとは

DuckDBは分析処理用のDBシステムです。

インストール

Mac/Linuxでは以下のコマンドを実行すればインストールできます。

curl https://install.duckdb.org | sh

Windowsでは以下のページから実行ファイルをダウンロードしてください。
https://duckdb.org/install/?platform=windows&environment=cli

DuckDBを使う

DuckDBはCLIでも利用できますが、Webブラウザ上で操作できるDuckDB Local UIを利用すると便利です。次のコマンドで起動します。

duckdb -ui

CSVを操作する

ここではサンプルとして、東京都が提供するCSVを利用します。

https://www.toukei.metro.tokyo.lg.jp/juukiy/jy-index.htm

時系列データの「第1表 区市町村別世帯数(昭和60年~令和7年)」のCSVをダウンロードします。

DuckDB Local UIを起動する

次のコマンドで起動すると、ブラウザ上で利用できます。

duckdb -ui

データソースを追加する

左ペインのAttached databasesの+ボタンからデータソースとしてCSVを追加します。

項目
Location File
Path 【ダウンロードしたCSVのパス】

NoteBookを開く

1つ目のCellには以下のように入力して実行します。

attach  if not exists ':jy25rv0100:' as jy25rv0100

2つ目ののCellで以下のようにCSVをSQLライクに操作できます。

select "地域_1", "令和7年/総世帯数(世帯)" from 'jy25rv0100'
where "令和7年/総世帯数(世帯)" > 300000
order by "令和7年/総世帯数(世帯)" desc

まとめ

この記事ではDuckDBを用いることでCSVをSQLライクに操作できることを説明しました。CSVファイルの文字コードはUTF-8である必要があるので注意が必要です。

Discussion