DuckDB

SQLiteライクな軽量DB

DuckDBのインストール

Windowsのパッケージマネージャーであるscoopを使って、インストールしました。

scoop install duckdb

CLIで使用する

DuckDBはCLIからも操作できます。起動すると、Dで始まるプロンプトが表示されます。

duckdb [OPTIONS] [FILENAME]

インメモリデータベースとして起動する

インタラクティブに使うにはduckdbコマンドを実行し、DuckDBを起動します。

duckdb

ファイル名を指定しなければインメモリデータベースとして起動します。

データベースを指定して起動する

引数にファイル名を指定すると、データを保持できます。

dubckdb test.db

ドットコマンド

DuckDB内で使用可能なコマンド。先頭にドット.が付きます。

カレントディレクトリを変更する

.cdコマンドを実行することで、カレントディレクトリを変更できます。

.cd DIRECTORY

出力フォーマットを変更する

.modeコマンドを実行することで、SQL実行結果のフォーマットを変更できます。

CSVで出力する
.mode csv
Markdownの表形式で出力する
.mode markdown

SQLの実行結果を1回のみファイルに保存する

.once [OPTIONS] <filename>

SQLファイルを読み込む

.readコマンドを実行することで、SQLファイルを実行できます。

.read sample.sql

COPY文

データをデータベースとファイル間でコピーします。

データをDuckDBからファイルにエクスポートする

DuckDBからファイルにデータを出力するには、COPY ... TOオプションを使用します。

COPY source-database TO target-database ( SCHEMA ) 

CSVファイルに出力する例。

COPY (SELECT * FROM sample_db)
TO 'export.csv' (HEADER true, DELIM ',')

SELECT文

データベースからデータを取得するため文。

SELECT select_list
FROM tables
    USING SAMPLE sample_expr
WHERE condition
GROUP BY groups
HAVING group_filter
    WINDOW window_expr
    QUALIFY qualify_filter
ORDER BY order_expr
LIMIT n;

UNPIVOT文

横持ちのデータを建持ちのデータに変換する文。

UNPIVOT [dataset]
ON [column(s)]
INTO 
    NAME [name-column-name]
    VALUE [value-column-name(s)]
ORDER BY [column(s)-with-order-direction(s)]
LIMIT [number-of-rows];

ON句でデータに変換したい列名を指定し、INTONAMEで元の列名を集合した列名、VALUEでデータの列名を指定する。

ORDER BY句

ORDER BY expr

指定した条件で行をソートします。

ORDER BY expr DESC

指定した例を降順でソートします。

データ型

Name 説明
DOUBLE 8 バイト倍精度浮動小数点数
HUGEINT 16 ビット符号付き整数
VARCHAR 可変長文字列

キャスティング

CAST (expr AS type-name)

キャストとは、指定したexprtの値を別のtype-nameデータ型の対応する値に変換する操作です。

浮動小数点型に変換する例

CAST(Intensity AS DOUBLE)

関数

数値操作

round(v NUMERIC, s INT)

round()関数は、vの小数点以下s桁に丸めた値を返します。

  1. 小数点以下第1位で四捨五入する場合
D SELECT ROUND(123.456, 1) AS Result;
┌──────────────┐
    Result    
 decimal(6,1) 
├──────────────┤
        123.5 
└──────────────┘

結果は123.5となります。

  1. 整数部で丸める場合
D SELECT ROUND(123.456, -1) AS Result;
┌──────────────┐
    Result    
 decimal(6,0) 
├──────────────┤
          120 
└──────────────┘

結果は120となります。

文字列操作

rtrim(string, charactes)

rtrim()関数は、stringの右側からcharactersで指定した文字をすべて削除します。

rtrim(Intensity, '%')

集計関数

SELECT句およびHAVING句のみで使える関数です。

一般集計関数

平均

avg(arg)

平均値を返します。

合計

sum(arg)

合計値を返します。

統計集計関数

stdev_pop(x)

母集団の標準偏差を返します。

stdev_samp(x)

標本の標準偏差を返します。

See Also

Nushell

Rust製シェル

2024/04/15

今日見つけたツール

VSCode - cSpell

スペルチェックを行う機能拡張

レコードを取得するSELECT文

テーブルからデータを取り出す

Vim

CLIで使用するテキストエディタ